Compare commits
23 Commits
Author | SHA1 | Date |
---|---|---|
|
1d920739fd | 1 year ago |
![]() |
9b36be4df2 | 1 year ago |
![]() |
415fd661cf | 1 year ago |
![]() |
32d0e04176 | 1 year ago |
|
d9ff91f991 | 1 year ago |
|
f910094e9b | 1 year ago |
![]() |
f1fdc7edf2 | 1 year ago |
|
7aa6c3d99d | 1 year ago |
![]() |
703a1cfb35 | 1 year ago |
|
ba0db4525e | 1 year ago |
![]() |
28cda89dc7 | 1 year ago |
![]() |
c55e1ba3d1 | 1 year ago |
![]() |
94ab4b3530 | 1 year ago |
![]() |
bd86c689c9 | 1 year ago |
![]() |
6d79b04277 | 1 year ago |
![]() |
8b45bc52da | 1 year ago |
![]() |
d48c9ae0ff | 1 year ago |
|
b09fb6d690 | 1 year ago |
|
5bf99d41dd | 1 year ago |
|
61f0ba8ec7 | 1 year ago |
|
30b14882d5 | 1 year ago |
|
136adc749e | 1 year ago |
|
06b0eb3e7e | 1 year ago |
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||
</startup>
|
||||
</configuration>
|
@ -0,0 +1,9 @@
|
||||
<Application x:Class="PenaltyMaster3000.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:PenaltyMaster3000"
|
||||
StartupUri="View/StartView.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 209 KiB |
After Width: | Height: | Size: 312 KiB |
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
@ -0,0 +1,356 @@
|
||||
<UserControl x:Class="PenaltyMaster3000.View.MainView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:PenaltyMaster3000.View"
|
||||
mc:Ignorable="d"
|
||||
Height="Auto" Width="Auto">
|
||||
<Grid>
|
||||
<Grid.Background>
|
||||
<ImageBrush ImageSource="/Images/goal_background.jpg"
|
||||
Stretch="UniformToFill"/>
|
||||
</Grid.Background>
|
||||
|
||||
<Grid Margin="110,101,128,59">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image Source="/Images/goalkeeper_top_right.png"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Visibility="{Binding VsMgr.GoalTopLeftVisibility}"/>
|
||||
<Image Source="/Images/football_ball.png"
|
||||
Width="50"
|
||||
Height="50"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Visibility="{Binding VsMgr.BallTopLeftVisibility}"/>
|
||||
<Image Source="/Images/white_question_point.png"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Visibility="{Binding VsMgr.QuestionPointTopLeftVisibility}"/>
|
||||
|
||||
<Image Source="/Images/goalkeeper_top_middle.png"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1"
|
||||
Visibility="{Binding VsMgr.GoalTopMiddleVisibility}"/>
|
||||
<Image Source="/Images/football_ball.png"
|
||||
Width="50"
|
||||
Height="50"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1"
|
||||
Visibility="{Binding VsMgr.BallTopMiddleVisibility}"/>
|
||||
<Image Source="/Images/white_question_point.png"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1"
|
||||
Visibility="{Binding VsMgr.QuestionPointTopMiddleVisibility}"/>
|
||||
|
||||
<Image Source="/Images/goalkeeper_top_left.png"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
Visibility="{Binding VsMgr.GoalTopRightVisibility}"/>
|
||||
<Image Source="/Images/football_ball.png"
|
||||
Width="50"
|
||||
Height="50"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
Visibility="{Binding VsMgr.BallTopRightVisibility}"/>
|
||||
<Image Source="/Images/white_question_point.png"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
Visibility="{Binding VsMgr.QuestionPointTopRightVisibility}"/>
|
||||
|
||||
|
||||
<Image Source="/Images/goalkeeper_down_right.png"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Visibility="{Binding VsMgr.GoalDownLeftVisibility}"/>
|
||||
<Image Source="/Images/football_ball.png"
|
||||
Width="50"
|
||||
Height="50"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Visibility="{Binding VsMgr.BallDownLeftVisibility}"/>
|
||||
<Image Source="/Images/white_question_point.png"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Visibility="{Binding VsMgr.QuestionPointDownLeftVisibility}"/>
|
||||
|
||||
<Image Source="{Binding CurrentImageSource}"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1"
|
||||
Visibility="{Binding VsMgr.StarterGoal}"/>
|
||||
<Image Source="/Images/goalkeeper_down_middle.png"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1"
|
||||
Visibility="{Binding VsMgr.GoalDownMiddleVisibility}"/>
|
||||
<Image Source="/Images/football_ball.png"
|
||||
Width="50"
|
||||
Height="50"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1"
|
||||
Visibility="{Binding VsMgr.BallDownMiddleVisibility}"/>
|
||||
<Image Source="/Images/white_question_point.png"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1"
|
||||
Visibility="{Binding VsMgr.QuestionPointDownMiddleVisibility}"/>
|
||||
|
||||
<Image Source="/Images/goalkeeper_down_left.png"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
Visibility="{Binding VsMgr.GoalDownRightVisibility}"/>
|
||||
<Image Source="/Images/football_ball.png"
|
||||
Width="50"
|
||||
Height="50"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
Visibility="{Binding VsMgr.BallDownRightVisibility}"/>
|
||||
<Image Source="/Images/white_question_point.png"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
Visibility="{Binding VsMgr.QuestionPointDownRightVisibility}"/>
|
||||
</Grid>
|
||||
|
||||
<Image Source="/Images/football_ball.png"
|
||||
Width="50"
|
||||
Height="50"
|
||||
VerticalAlignment="Bottom"
|
||||
Visibility="{Binding VsMgr.StarterBall}"/>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" SharedSizeGroup="RowGroup"/>
|
||||
<RowDefinition Height="*" SharedSizeGroup="RowGroup"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" SharedSizeGroup="ColumnGroup"/>
|
||||
<ColumnDefinition Width="*" SharedSizeGroup="ColumnGroup"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Image Source="/Images/whistle.png"
|
||||
Grid.Column="1"
|
||||
Grid.Row="0"
|
||||
Visibility="{Binding WhistleImageVisibility}">
|
||||
<Image.RenderTransform>
|
||||
<TranslateTransform X="0" Y="0"/>
|
||||
</Image.RenderTransform>
|
||||
<Image.Effect>
|
||||
<DropShadowEffect BlurRadius="10" Color="Black" Direction="315" ShadowDepth="2"/>
|
||||
</Image.Effect>
|
||||
<Image.Triggers>
|
||||
<EventTrigger RoutedEvent="Loaded">
|
||||
<BeginStoryboard>
|
||||
<Storyboard RepeatBehavior="Forever">
|
||||
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
|
||||
Duration="0:0:0.1"
|
||||
AutoReverse="True"
|
||||
From="0" To="-5" />
|
||||
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)"
|
||||
Duration="0:0:0.1"
|
||||
AutoReverse="True"
|
||||
From="0" To="5" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
</Image.Triggers>
|
||||
</Image>
|
||||
|
||||
<TextBlock Text="{Binding ActionText}"
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="Red"
|
||||
FontWeight="Bold"
|
||||
FontSize="30"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Center"
|
||||
Visibility="{Binding ActionTextVisibility}"/>
|
||||
|
||||
</Grid>
|
||||
|
||||
<Border Margin="80"
|
||||
BorderBrush="#FF2196F3"
|
||||
Background="#FFFFFF"
|
||||
BorderThickness="2"
|
||||
CornerRadius="10"
|
||||
Padding="20"
|
||||
Grid.Row="1"
|
||||
Visibility="{Binding ScoreBoardVisibility}">
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Fond du panneau d'affichage -->
|
||||
<Grid.Background>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
|
||||
<GradientStop Color="#3F51B5" Offset="0"/>
|
||||
<GradientStop Color="#2196F3" Offset="1"/>
|
||||
</LinearGradientBrush>
|
||||
</Grid.Background>
|
||||
|
||||
<Grid Grid.Column="1"
|
||||
Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<!-- Score de l'équipe 1 -->
|
||||
<TextBlock Text="{Binding Player1ScoreText}"
|
||||
Foreground="White"
|
||||
FontSize="80"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Margin="20,0,0,0"
|
||||
Grid.Column="0"/>
|
||||
|
||||
<!-- Séparateur central -->
|
||||
<TextBlock Text="-"
|
||||
Foreground="White"
|
||||
FontSize="80"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Grid.Column="1"/>
|
||||
|
||||
<!-- Score de l'équipe 2 -->
|
||||
<TextBlock Text="{Binding Player2ScoreText}"
|
||||
Foreground="White"
|
||||
FontSize="80"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0,0,20,0"
|
||||
Grid.Column="2"/>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
|
||||
</Border>
|
||||
|
||||
<Border Margin="80"
|
||||
BorderBrush="#FF2196F3"
|
||||
Background="#FFFFFF"
|
||||
BorderThickness="2"
|
||||
CornerRadius="10"
|
||||
Padding="20"
|
||||
Grid.Row="1"
|
||||
Visibility="{Binding FinalResultVisibility}">
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Fond du panneau d'affichage -->
|
||||
<Grid.Background>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
|
||||
<GradientStop Color="#3F51B5" Offset="0"/>
|
||||
<GradientStop Color="#2196F3" Offset="1"/>
|
||||
</LinearGradientBrush>
|
||||
</Grid.Background>
|
||||
|
||||
<Grid Grid.Column="0"
|
||||
Grid.ColumnSpan="3"
|
||||
Grid.Row="0">
|
||||
<TextBlock Text="{Binding FinalWinnerText}"
|
||||
Foreground="White"
|
||||
FontSize="40"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Margin="20,0,0,0"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="1"
|
||||
Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<!-- Score de l'équipe 1 -->
|
||||
<TextBlock Text="{Binding Player1ScoreText}"
|
||||
Foreground="White"
|
||||
FontSize="80"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Margin="20,0,0,0"
|
||||
Grid.Column="0"/>
|
||||
|
||||
<!-- Séparateur central -->
|
||||
<TextBlock Text="-"
|
||||
Foreground="White"
|
||||
FontSize="80"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Grid.Column="1"/>
|
||||
|
||||
<!-- Score de l'équipe 2 -->
|
||||
<TextBlock Text="{Binding Player2ScoreText}"
|
||||
Foreground="White"
|
||||
FontSize="80"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0,0,20,0"
|
||||
Grid.Column="2"/>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
@ -0,0 +1,39 @@
|
||||
<Window x:Class="PenaltyMaster3000.View.StartView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:PenaltyMaster3000.View"
|
||||
mc:Ignorable="d"
|
||||
Title="StartView" Height="450" Width="800">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="PENALTY MASTER"
|
||||
FontSize="40"
|
||||
FontWeight="Bold"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Grid.Row="0"/>
|
||||
<Border Width="400"
|
||||
Height="100"
|
||||
BorderBrush="#FF2196F3"
|
||||
BorderThickness="2"
|
||||
CornerRadius="10"
|
||||
Padding="5"
|
||||
Grid.Row="1">
|
||||
<Button Width="400"
|
||||
Height="100"
|
||||
Content="Start"
|
||||
FontSize="30"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Background="#FF2196F3"
|
||||
Foreground="White"
|
||||
BorderThickness="0"
|
||||
Command="{Binding StartCommand}"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Window>
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="CommunityToolkit.Mvvm" version="8.2.2" targetFramework="net48" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="7.0.0" targetFramework="net48" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
|
||||
<package id="System.ComponentModel.Annotations" version="5.0.0" targetFramework="net48" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
|
||||
</packages>
|
@ -0,0 +1,98 @@
|
||||
# PenaltyMaster3000 ⚽️
|
||||
|
||||
## Bonjour et bienvenue sur le dépôt du projet PenaltyMaster3000 ! 👋
|
||||
|
||||
*******
|
||||
|
||||
Sommaire
|
||||
1. [Accessibilité](#acces)
|
||||
2. [Présentation du projet](#presentation)
|
||||
3. [Règles du jeu](#regles)
|
||||
3. [Solutions mises en place](#solutions)
|
||||
4. [Structure du projet](#structure)
|
||||
5. [Auteurs](#auteurs)
|
||||
|
||||
*******
|
||||
|
||||
<div id='acces'/>
|
||||
|
||||
## :rotating_light: Branches
|
||||
* La totalité des tps et le projet se trouvent dans la branche `master` (__sauf pour la partie 3 de l'exo 2__)
|
||||
* La partie 3 de l'exercice 2 (__mapping__) se trouve dans la branche `ex2-part3-mapping-et-factory`
|
||||
* Les branches crées au long de la période n'ont pas été supprimées afin de mettre a disposition un historique du travail effectuer.
|
||||
|
||||
## Accessibilité ↗
|
||||
|
||||
> :warning: **Warning**: Le déploiement n'a pas encore été fait.
|
||||
|
||||
Pour lancer le projet **Penalty Master 3000**, vous devrez cloner le répertoire, ouvrir le projet dans Visual Studio et définir la solution PenaltyMaster3000 comme projet de démarrage.
|
||||
|
||||
*******
|
||||
|
||||
<div id='presentation'/>
|
||||
|
||||
## **Présentation** 🎉
|
||||
|
||||
Votre simulateur de séance de penalty en réalité virtuelle !
|
||||
|
||||
**PenaltyMaster3000** est un simulateur de séance de penalty multijoueur conçu pour la réalité virtuelle. Le jeu utilise la technologie **Kinect** pour suivre les mouvements des joueurs et les intégrer dans l'expérience de réalité virtuelle. Développé en **C#**, ce projet offre une immersion réaliste et interactive, permettant aux utilisateurs de vivre l'excitation d'une séance de penalty dans le confort de leur propre espace. En incarnant aussi bien le tireur que le gardien, vous pourrez défier vos amis dans un duel intense.
|
||||
|
||||
*******
|
||||
|
||||
<div id='regles'/>
|
||||
|
||||
## Règles du jeu 📖
|
||||
|
||||
Une fois la partie lancée, son déroulement est assez linéaire en suivant une même boucle de jeu :
|
||||
- le tireur sélectionne de la zone de tir avec une certaine posture.
|
||||
- le tireur simule un tir pour passer au tour du gardien.
|
||||
- le gardien sélectionne sa zone d'arrêt avec une posture spécifique.
|
||||
|
||||
A la fin du tour, les joueurs changent de rôle et continue la partie.
|
||||
|
||||
Au bout de 10 tirs, le joueur ayant inscrit le plus de buts remporte la partie. En cas d'égalité, les joueurs repartent sur 1 tir supplémentaire chacun jusqu'il y ait un résultat positif pour l'un des joueurs.
|
||||
|
||||
Les 4 postures possibles sont : `main gauche en haut`, `main haut droite`, `main bas gauche` et `main bas droite`.
|
||||
La gesture de tir consiste à lever son pied vers l'avant comme si l'on tirait dans un ballon (le pied doit monter assez haut).
|
||||
|
||||
*******
|
||||
|
||||
<div id='solutions'/>
|
||||
|
||||
## Solutions mises en place
|
||||
|
||||
**PenaltyMaster3000.csproj** : Ce projet est responsable de la logique du jeu PenaltyMaster3000. Il comprend les règles du jeu, le système de notation et les interactions des joueurs.
|
||||
|
||||
**MyGestureBank.csproj** : Ce projet contient une bibliothèque de gestes. Il est utilisé pour stocker, récupérer et gérer les gestes utilisés dans différentes applications.
|
||||
|
||||
**KinectUtils.csproj** : Ce projet est une bibliothèque d'utilitaires pour Kinect. Il fournit des fonctions d'aide et des classes pour simplifier le travail avec les données du capteur Kinect.
|
||||
|
||||
**PostureTester.csproj** : Ce projet est utilisé pour tester et valider les postures. Il utilise les données du capteur Kinect pour analyser et évaluer les postures des utilisateurs.
|
||||
|
||||
**KinectSensorStreams.csproj** : Ce projet gère le streaming de données du capteur Kinect. Il comprend des classes pour gérer différents types de flux de données, tels que la couleur, la profondeur et le corps.
|
||||
|
||||
**GestureTestApp.csproj** : Ce projet est une application pour tester les gestes. Il utilise la bibliothèque MyGestureBank pour tester et valider les gestes.
|
||||
|
||||
**KinectConnection.csproj** : Ce projet gère la connexion au capteur Kinect. Il comprend des classes pour initialiser le capteur, gérer les événements du capteur et gérer les données du capteur.
|
||||
|
||||
*******
|
||||
|
||||
<div id='structure'/>
|
||||
|
||||
## Structure du projet
|
||||
|
||||
La solution est divisée en de nombreux packages dont l'application WPF en .NET Framework composée des dossiers suivants :
|
||||
- `Helpers/` : contient les classes d'aide comme [`VisibilityManager.cs`](Helpers/VisibilityManager.cs)
|
||||
- `Images/` : contient les images utilisées dans le projet
|
||||
- `Navigation/` : contient les classes concernant la navigation, incluant [`INavigationService.cs`](Navigation/INavigationService.cs) et [`NavigationService.cs`](Navigation/NavigationService.cs)
|
||||
- `View/` : contient les vues (UI) de l'application, incluant [`MainView.xaml`](View/MainView.xaml) et [`StartView.xaml`](View/StartView.xaml)
|
||||
- `ViewModel/` : contient les ViewModels pour les vues, incluant [`MainVM.cs`](ViewModel/MainVM.cs) et [`StartVM.cs`](ViewModel/StartVM.cs)
|
||||
|
||||
*******
|
||||
|
||||
<div id='auteurs'/>
|
||||
|
||||
## **Auteurs** 👥
|
||||
|
||||
Étudiant 3ème Annnée - BUT Informatique - IUT Clermont Auvergne - 2023-2024
|
||||
`BRODA Lou` - `FRANCO Nicolas`
|