Ajout des fractions, du logo (à finir de placer et redimensionner) et correction de design et d'erreur

master
cldupland 5 years ago
parent 9e43bbfc54
commit 7c128cd5d1

@ -1,24 +1,6 @@
Passer sur git
Mono-utilisateur: Mono-utilisateur:
- Multilangue - Multilangue
- Changer les thèmes et les couleurs (en option) - Changer les thèmes et les couleurs (en option) V => pour l'instant thème blanc et noir
- jeu classique pas extreme
- Thème dark
- Jeu solo complet
- Push version sur les stores pour la semaine pro
- Rendre abstract la creation deck V
- Drag and drop
- Option pour mettre/enlever le pas de 10 - Option pour mettre/enlever le pas de 10
- Menu de choix de partie - Logo entre les piles (à finir de placer et de redimensionner)
- Menu des règles - nb carte
- Plus de com (1 mail chaque soir)
- Faire une classe règle abstraite:
- Faire une list de règle devant toute être vérifier à chaque carte joué
- Faire une list de règle devant toute être vérifier à chaque fin de tour
- Skia
- GameMaster implémentera un ModeDeJeu qui implémentera des règles du jeu
The game -> déposé?
avant faire fonctionner en local puis on choisira ensemble

@ -3,13 +3,9 @@
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" /> <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<application android:icon="@drawable/TrierImageB" android:label="OrderStacks"></application> <application android:icon="@drawable/TrierImageB" android:label="OrderStacks"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
</manifest> </manifest>

@ -1,11 +1,11 @@
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// Ce code a été généré par un outil. // This code was generated by a tool.
// Version du runtime :4.0.30319.42000 // Runtime Version:4.0.30319.42000
// //
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si // Changes to this file may cause incorrect behavior and will be lost if
// le code est régénéré. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@ -44,9 +44,11 @@
<None Remove="Media\Engrenage.jpeg" /> <None Remove="Media\Engrenage.jpeg" />
<None Remove="Media\moon.jpg" /> <None Remove="Media\moon.jpg" />
<None Remove="AppRessources-br.Designer.cs.orig" /> <None Remove="AppRessources-br.Designer.cs.orig" />
<None Remove="Media\TrierImageB.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Media\thegame.jpg" /> <EmbeddedResource Include="Media\thegame.jpg" />
<EmbeddedResource Include="Media\TrierImageB.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Update="AppRessource.resx"> <EmbeddedResource Update="AppRessource.resx">

@ -5,11 +5,11 @@ namespace TheGameExtreme.model.card.cardType
{ {
public static readonly string CARD_FRACTION = "FractionCard"; public static readonly string CARD_FRACTION = "FractionCard";
private Fraction fraction; public Fraction Fraction { get; set; }
public FractionCard(Fraction value) : base(value.Result()) public FractionCard(Fraction value) : base(value.Result())
{ {
fraction = value; Fraction = value;
} }
public override bool rapidEffect() public override bool rapidEffect()
@ -24,7 +24,7 @@ namespace TheGameExtreme.model.card.cardType
public override string ToString() public override string ToString()
{ {
return fraction.ToString(); return Fraction.ToString();
} }
} }
} }

@ -13,22 +13,18 @@ namespace TheGameExtreme.model
Denominateur = denominateur; Denominateur = denominateur;
} }
//public int CompareTo(Fraction fraction) public bool isMultiple(Fraction fraction)
//{ {
// decimal d = (Numerateur / Denominateur) - (fraction.Numerateur / fraction.Denominateur); if (Numerateur % fraction.Numerateur == 0)
// if (d > 0) {
// { return true;
// return 1; }
// } if (Denominateur % fraction.Denominateur == 0)
// else if (d < 0) {
// { return true;
// return -1; }
// } return false;
// else }
// {
// return 0;
// }
//}
public bool testDiviseurCommun(Fraction fraction) public bool testDiviseurCommun(Fraction fraction)
{ {

@ -75,23 +75,23 @@ namespace TheGameExtreme.model.gameActions.classic
{ {
if (start < end) if (start < end)
{ {
decimal pivot = ar[end].Value; Card pivot = ar[end];
int pIndex = start; int pIndex = start;
decimal swap; Card swap;
for (int i = start; i < end; i++) for (int i = start; i < end; i++)
{ {
if (ar[i].Value < pivot) if (ar[i].Value.CompareTo(pivot.Value) < 0)
{ {
swap = ar[pIndex].Value; swap = ar[pIndex];
ar[pIndex].Value = ar[i].Value; ar[pIndex] = ar[i];
ar[i].Value = swap; ar[i] = swap;
pIndex++; pIndex++;
} }
} }
ar[end].Value = ar[pIndex].Value; ar[end] = ar[pIndex];
ar[pIndex].Value = pivot; ar[pIndex] = pivot;
quickSort(ar, start, pIndex - 1); quickSort(ar, start, pIndex - 1);
quickSort(ar, pIndex + 1, end); quickSort(ar, pIndex + 1, end);

@ -52,7 +52,7 @@ namespace TheGameExtreme.model.gameActions.classic
protected bool Rule(Card card, Stack<Card> stack, bool bottomUp, Player player, List<Card> CurrentCardPlayed) protected bool Rule(Card card, Stack<Card> stack, bool bottomUp, Player player, List<Card> CurrentCardPlayed)
{ {
if ((bottomUp && card.Value > stack.Peek().Value) || (!bottomUp && card.Value < stack.Peek().Value) || card.Value.CompareTo(stack.Peek().Value - 10) == 0 || card.Value.CompareTo(stack.Peek().Value + 10) == 0) if ((bottomUp && card.Value.CompareTo(stack.Peek().Value) > 0) || (!bottomUp && card.Value.CompareTo(stack.Peek().Value) < 0)) // || card.Value.CompareTo(stack.Peek().Value - 10) == 0 || card.Value.CompareTo(stack.Peek().Value + 10) == 0 => creer classe abstraite decimal carte qui pour contenir isMultiple
{ {
OldCard = stack.Peek(); OldCard = stack.Peek();
player.joue(card); player.joue(card);

@ -141,22 +141,6 @@
</Grid> </Grid>
<!--<StackLayout
Grid.Row="0"
Grid.Column="0"
Margin="50,30,50,0">
<Label Text="Nom des joueurs"
TextColor="{DynamicResource WhiteColor}"
FontSize="16"
VerticalTextAlignment="Center"
HorizontalTextAlignment="Center"/>
</StackLayout>-->
<StackLayout <StackLayout
x:Name="NameList" x:Name="NameList"
Grid.Column="0" Grid.Column="0"
@ -175,7 +159,8 @@
Placeholder="Pseudo" Placeholder="Pseudo"
HorizontalOptions="Center" HorizontalOptions="Center"
MinimumWidthRequest="50" MinimumWidthRequest="50"
WidthRequest="200"/> WidthRequest="200"
MaxLength="18"/>
</StackLayout> </StackLayout>

@ -85,8 +85,8 @@ namespace TheGameExtreme.view
BackgroundColor = (Color)Application.Current.Resources["SkyBlueColor"], BackgroundColor = (Color)Application.Current.Resources["SkyBlueColor"],
WidthRequest = 200, WidthRequest = 200,
MinimumWidthRequest = 50, MinimumWidthRequest = 50,
HorizontalOptions = LayoutOptions.Center HorizontalOptions = LayoutOptions.Center,
MaxLength = 18
}; };

@ -1,31 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ContentPage Title="THEGAME" BackgroundColor="{DynamicResource BlackColor}" <ContentPage
Title="THEGAME"
BackgroundColor="{DynamicResource BlackColor}"
xmlns="http://xamarin.com/schemas/2014/forms" xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TheGameExtreme.view.HomePage"> x:Class="TheGameExtreme.view.HomePage">
<StackLayout BackgroundColor="Transparent"> <StackLayout BackgroundColor="Transparent">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="15*"/>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="70*"/>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="15*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="*"/> <RowDefinition Height="19*"/>
<RowDefinition Height="*"/> <RowDefinition Height="27*"/>
<RowDefinition Height="*"/> <RowDefinition Height="27*"/>
<RowDefinition Height="*"/> <RowDefinition Height="27*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Text="OrderStacks" TextColor="{DynamicResource WhiteColor}" <Label
Text="OrderStacks"
TextColor="{DynamicResource WhiteColor}"
Grid.Row="0" Grid.Column="1" Grid.Row="0" Grid.Column="1"
HorizontalTextAlignment="Center" HorizontalTextAlignment="Center"
FontSize="35" FontSize="35"
VerticalTextAlignment="Center" VerticalTextAlignment="Center"
FontFamily=""/> FontFamily=""/>
<ImageButton Source="EngrenageV1.jpeg" <ImageButton
Source="EngrenageV1.jpeg"
Grid.Row="0" Grid.Column="2" Grid.Row="0" Grid.Column="2"
VerticalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"
HorizontalOptions="End" HorizontalOptions="End"
@ -34,7 +41,11 @@
Clicked="OpenSetting" Clicked="OpenSetting"
BackgroundColor="{DynamicResource BlackColor}"/> BackgroundColor="{DynamicResource BlackColor}"/>
<Button Text="Jeu en local" FontSize="18" Grid.Row="1" Grid.Column="1" <Button
Text="Jeu en local"
FontSize="18"
Grid.Row="1"
Grid.Column="1"
HorizontalOptions="Center" HorizontalOptions="Center"
WidthRequest="230" WidthRequest="230"
HeightRequest="57" HeightRequest="57"
@ -45,7 +56,11 @@
BackgroundColor="{DynamicResource SkyBlueColor}"/> BackgroundColor="{DynamicResource SkyBlueColor}"/>
<Button Text="Multijoueur" FontSize="18" Grid.Row="2" Grid.Column="1" <Button
Text="Multijoueur"
FontSize="18"
Grid.Row="2"
Grid.Column="1"
HorizontalOptions="Center" HorizontalOptions="Center"
VerticalOptions="Center" VerticalOptions="Center"
HeightRequest="57" HeightRequest="57"
@ -55,16 +70,19 @@
Margin="15" Margin="15"
BackgroundColor="{DynamicResource SkyBlueColor}"/> BackgroundColor="{DynamicResource SkyBlueColor}"/>
<ImageButton Source="imagesRules.png" Grid.Column="0" <ImageButton
Source="imagesRules.png"
Grid.Column="0"
Grid.Row="0" Grid.Row="0"
HeightRequest="60" HeightRequest="40"
WidthRequest="45" WidthRequest="25"
VerticalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"
HorizontalOptions="Start" HorizontalOptions="Start"
Margin="20"
Clicked="Rules_Clicked" Clicked="Rules_Clicked"
BackgroundColor="{DynamicResource BlackColor}"/> BackgroundColor="{DynamicResource BlackColor}"/>
</Grid> </Grid>
</StackLayout> </StackLayout>
</ContentPage> </ContentPage>

@ -7,6 +7,8 @@ using SkiaSharp;
using SkiaSharp.Views.Forms; using SkiaSharp.Views.Forms;
using TouchTracking; using TouchTracking;
using Xamarin.Essentials; using Xamarin.Essentials;
using System.IO;
using System.Reflection;
namespace TheGameExtreme.view namespace TheGameExtreme.view
{ {
@ -25,6 +27,8 @@ namespace TheGameExtreme.view
List<TouchManipulationCard> stackCollection = new List<TouchManipulationCard>(); List<TouchManipulationCard> stackCollection = new List<TouchManipulationCard>();
Dictionary<long, TouchManipulationCard> textDictionary = new Dictionary<long, TouchManipulationCard>(); Dictionary<long, TouchManipulationCard> textDictionary = new Dictionary<long, TouchManipulationCard>();
private SKCanvas canvas; private SKCanvas canvas;
private SKBitmap logo;
private SKPoint logoPoint;
/** /**
@ -53,6 +57,12 @@ namespace TheGameExtreme.view
InflateStack(); InflateStack();
InflateHand(); InflateHand();
using (Stream stream = GetType().GetTypeInfo().Assembly.GetManifestResourceStream("TheGameExtreme.Media.TrierImageB.png"))
{
logo = SKBitmap.Decode(stream);
}
logoPoint = new SKPoint((float)DeviceDisplay.MainDisplayInfo.Width * 0.5f - logo.Width * 0.5f, (float)(DeviceDisplay.MainDisplayInfo.Height * 0.9) * 0.5f - logo.Height * 0.5f);
} }
@ -97,6 +107,8 @@ namespace TheGameExtreme.view
{ {
textPaint.Paint(canvas, SKColors.SkyBlue); textPaint.Paint(canvas, SKColors.SkyBlue);
} }
canvas.DrawBitmap(logo, logoPoint);
} }

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using SkiaSharp; using SkiaSharp;
using TheGameExtreme.model.card.cardType;
using TheGameExtreme.viewmodel; using TheGameExtreme.viewmodel;
using TouchTracking; using TouchTracking;
using Xamarin.Essentials; using Xamarin.Essentials;
@ -14,6 +15,8 @@ namespace TheGameExtreme.view
{ {
public SKPoint InitialPoint { get; set; } public SKPoint InitialPoint { get; set; }
SKPaint textPaint; SKPaint textPaint;
SKPaint textPaint1;
SKPaint textPaint2;
Dictionary<long, TouchManipulationInfo> touchDictionary = new Dictionary<long, TouchManipulationInfo>(); Dictionary<long, TouchManipulationInfo> touchDictionary = new Dictionary<long, TouchManipulationInfo>();
public CardVM Value; public CardVM Value;
public string display; public string display;
@ -29,6 +32,15 @@ namespace TheGameExtreme.view
{ {
this.textPaint = textPaint; this.textPaint = textPaint;
Value = value; Value = value;
if (Value.View.GetType() == typeof(FractionCard))
{
textPaint1 = new SKPaint();
textPaint2 = new SKPaint();
textPaint1.TextSize = textPaint.TextSize;
textPaint2.TextSize = textPaint.TextSize;
}
display = Value.ToString(); display = Value.ToString();
height = 2f * width; height = 2f * width;
@ -72,11 +84,49 @@ namespace TheGameExtreme.view
textPaint.Style = SKPaintStyle.Stroke; textPaint.Style = SKPaintStyle.Stroke;
SKRect card = new SKRect(); SKRect card = new SKRect();
if (Value.View.GetType() == typeof(FractionCard))
{
textPaint.MeasureText("00", ref card);
textPaint1.Color = color;
textPaint1.StrokeWidth = 5;
textPaint1.Style = SKPaintStyle.Stroke;
textPaint2.Color = color;
textPaint2.StrokeWidth = 5;
textPaint2.Style = SKPaintStyle.Stroke;
}
else
{
textPaint.MeasureText(display, ref card); textPaint.MeasureText(display, ref card);
}
card.Inflate(width, height); card.Inflate(width, height);
if (Value.View.GetType() == typeof(FractionCard))
{
canvas.DrawRect(card, textPaint1);
if (((FractionCard)Value.View).Fraction.Numerateur < 10 && ((FractionCard)Value.View).Fraction.Numerateur > 0)
{
canvas.DrawText(((FractionCard)Value.View).Fraction.Numerateur.ToString(), textPaint.MeasureText(((FractionCard)Value.View).Fraction.Numerateur.ToString()) * 0.5f, -50, textPaint);
}
else
{
canvas.DrawText(((FractionCard)Value.View).Fraction.Numerateur.ToString(), 0, -50, textPaint);
}
canvas.DrawText("__", 0, -textPaint.TextSize * 0.5f, textPaint1);
if (((FractionCard)Value.View).Fraction.Denominateur < 10 && ((FractionCard)Value.View).Fraction.Denominateur > 0)
{
canvas.DrawText(((FractionCard)Value.View).Fraction.Denominateur.ToString(), textPaint.MeasureText(((FractionCard)Value.View).Fraction.Denominateur.ToString()) * 0.5f, 50, textPaint2);
}
else
{
canvas.DrawText(((FractionCard)Value.View).Fraction.Denominateur.ToString(), 0, 50, textPaint2);
}
}
else
{
canvas.DrawRect(card, textPaint); canvas.DrawRect(card, textPaint);
canvas.DrawText(display, 0, 0, textPaint); canvas.DrawText(display, 0, 0, textPaint);
}
canvas.Restore(); canvas.Restore();
@ -107,7 +157,7 @@ namespace TheGameExtreme.view
SKPoint transformedPoint = inverseMatrix.MapPoint(location); SKPoint transformedPoint = inverseMatrix.MapPoint(location);
// Check if it's in the untransformed bitmap rectangle // Check if it's in the untransformed bitmap rectangle
SKRect rect = new SKRect(-70, -110, textPaint.MeasureText(display) + 35, textPaint.TextSize); SKRect rect = new SKRect(-width, -height * 1.5f, width * 2.5f + 5, height);
return rect.Contains(transformedPoint); return rect.Contains(transformedPoint);
} }
return false; return false;

Loading…
Cancel
Save