diff --git a/Tiskipeli/Tiskipeli/App.xaml b/Tiskipeli/Tiskipeli/App.xaml index 55caaa736811bad1b2581635ec5c90dc52ab7a74..8a86ebd716ef24dfa97834634938acc8156ff457 100644 --- a/Tiskipeli/Tiskipeli/App.xaml +++ b/Tiskipeli/Tiskipeli/App.xaml @@ -1,7 +1,7 @@ -<Application x:Class="Tiskipeli.App" +<Application x:Class="Tiskipelitesti.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="clr-namespace:Tiskipeli" + xmlns:local="clr-namespace:Tiskipelitesti" StartupUri="MainWindow.xaml"> <Application.Resources> diff --git a/Tiskipeli/Tiskipeli/App.xaml.cs b/Tiskipeli/Tiskipeli/App.xaml.cs index 688311eb434733417aa19511c2419fdbac659318..fc00a68d4ca839b4bd3d681e584e8c06a735037c 100644 --- a/Tiskipeli/Tiskipeli/App.xaml.cs +++ b/Tiskipeli/Tiskipeli/App.xaml.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Threading.Tasks; using System.Windows; -namespace Tiskipeli +namespace Tiskipelitesti { /// <summary> /// Interaction logic for App.xaml diff --git a/Tiskipeli/Tiskipeli/MainWindow.xaml b/Tiskipeli/Tiskipeli/MainWindow.xaml index 9d9b4e1c7b0a041627720093bea8be304bb046c5..ec8fdff53033c9b018f64898d93728f34ca85885 100644 --- a/Tiskipeli/Tiskipeli/MainWindow.xaml +++ b/Tiskipeli/Tiskipeli/MainWindow.xaml @@ -1,9 +1,9 @@ -<Window x:Class="Tiskipeli.MainWindow" +<Window x:Class="Tiskipelitesti.MainWindow" 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:Tiskipeli" + xmlns:local="clr-namespace:Tiskipelitesti" mc:Ignorable="d" Title="Tiskipeli" Height="500" Width="800"> <Canvas Name="Tausta" Focusable="True" Background="Black" KeyDown="KeyIsDown" KeyUp="KeyIsUp"> diff --git a/Tiskipeli/Tiskipeli/MainWindow.xaml.cs b/Tiskipeli/Tiskipeli/MainWindow.xaml.cs index 5886b9aacba8b084797834cac18301c208ccb799..c43d427c9db826b9540520f53df22260c5694e2e 100644 --- a/Tiskipeli/Tiskipeli/MainWindow.xaml.cs +++ b/Tiskipeli/Tiskipeli/MainWindow.xaml.cs @@ -5,7 +5,6 @@ using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; -using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; @@ -13,61 +12,69 @@ using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; - using System.Windows.Threading; -namespace Tiskipeli +namespace Tiskipelitesti { /// <summary> - /// Interaction logic for MainWindow.xaml + /// Itsepeli /// </summary> public partial class MainWindow : Window { - bool meneVasen, meneOikea; - List<Rectangle> poistettavat = new List<Rectangle>(); - - int vihuKuva = 0; int luotiAjastin = 0; const int luotiAjastinLimit = 90; int vihuMaara = 0; int vihuNopeus = 6; - int pelaajaElamatMaara = 3; + int pelaajaElamatMaara = 3; bool peliOhi = false; DispatcherTimer peliAjastin = new DispatcherTimer(); ImageBrush pelaajaKuva = new ImageBrush(); ImageBrush taustaKuva = new ImageBrush(); + /// <summary> - /// Pelin fysiikan "rakentaja" + /// Pelin Fysiikan "rakentaja" /// </summary> public MainWindow() { InitializeComponent(); + InitializeGame(); + peliAjastin.Tick += PeliLoop; peliAjastin.Interval = TimeSpan.FromMilliseconds(20); peliAjastin.Start(); + } - //Pelaaja hahmon kuvan asettaminen + //Aliohjelma pelaajan kuvan päivittämiseen ja vihujen luontiin + private void InitializeGame() + { pelaajaKuva.ImageSource = new BitmapImage(new Uri("pack://application:,,,/Kuvat/Tiskiharja.png")); pelaaja.Fill = pelaajaKuva; - //Taustakuvan keskittäminen + //Keskittää taustakuvan Tausta.Focus(); - - // Luotujen vihollisten määrä luoVihu(20); } + //Pelin perustoiminnat aliohjelmiakutsumalla private void PeliLoop(object sender, EventArgs e) { - Rect pelaajaHitBox = new Rect(Canvas.GetLeft(pelaaja), Canvas.GetTop(pelaaja), pelaaja.Width, pelaaja.Height); - vihutJaljella.Content = "Vihollisia jäljellä: " + vihuMaara; - pelaajaElamat.Content = "Elämiä: " + pelaajaElamatMaara; + PelaajanLiikkuminen(); + Ampuminen(); + VihunPaivitys(); + OsumaTarkistus(); + OlioidenPoisto(); + PeliTilaTarkastus(); + } + //Pelaajaan liikkumisen logiikka ja hitbox + private void PelaajanLiikkuminen() + { + Rect pelaajaHitBox = new Rect(Canvas.GetLeft(pelaaja), Canvas.GetTop(pelaaja), pelaaja.Width, pelaaja.Height); if (meneVasen == true && Canvas.GetLeft(pelaaja) > 0) { Canvas.SetLeft(pelaaja, Canvas.GetLeft(pelaaja) - 10); @@ -76,21 +83,56 @@ namespace Tiskipeli { Canvas.SetLeft(pelaaja, Canvas.GetLeft(pelaaja) + 10); } + } + //Ajastimella toimiva vihollisen ampuminen + private void Ampuminen() + { luotiAjastin -= 3; if (luotiAjastin < 0) { vihuLuodinTeko(Canvas.GetLeft(pelaaja) + 20, 10); - luotiAjastin = luotiAjastinLimit; } + } + + //Logiikkaa vihollisen toiminalle + private void VihunPaivitys() + { + Rect pelaajaHitBox = new Rect(Canvas.GetLeft(pelaaja), Canvas.GetTop(pelaaja), pelaaja.Width, pelaaja.Height); foreach (var x in Tausta.Children.OfType<Rectangle>()) { - if (x is Rectangle && (string)x.Tag == "luoti") + if (x is Rectangle && (string)x.Tag == "vihu") { + Canvas.SetLeft(x, Canvas.GetLeft(x) + vihuNopeus); + + if (Canvas.GetLeft(x) > 820) + { + Canvas.SetLeft(x, -80); + Canvas.SetTop(x, Canvas.GetTop(x) + (x.Height + 10)); + } + Rect vihuHitBox = new Rect(Canvas.GetLeft(x), Canvas.GetTop(x), x.Width, x.Height); + //Ohjaa sen mitä tapahtuu vihu kehon osuessa pelaajaan + if (pelaajaHitBox.IntersectsWith(vihuHitBox)) + { + naytaPeliohi("Likaiset lautaset rikkoivat harjasi!"); + } + } + } + } + + //Luotien osumisen tarkistus ja ohi menneiden luotien poisto + private void OsumaTarkistus() + { + Rect pelaajaHitBox = new Rect(Canvas.GetLeft(pelaaja), Canvas.GetTop(pelaaja), pelaaja.Width, pelaaja.Height); + + foreach (var x in Tausta.Children.OfType<Rectangle>()) + { + if (x is Rectangle && (string)x.Tag == "luoti") + { Canvas.SetTop(x, Canvas.GetTop(x) - 20); if (Canvas.GetTop(x) < 10) @@ -100,6 +142,7 @@ namespace Tiskipeli Rect luoti = new Rect(Canvas.GetLeft(x), Canvas.GetTop(x), x.Width, x.Height); + //Tuhoaa sen vihu olion johon pelaajan luoti osui foreach (var y in Tausta.Children.OfType<Rectangle>()) { if (y is Rectangle && (string)y.Tag == "vihu") @@ -114,30 +157,9 @@ namespace Tiskipeli } } } - - - - - } - - if (x is Rectangle && (string)x.Tag =="vihu") - { - Canvas.SetLeft(x, Canvas.GetLeft(x) + vihuNopeus); - - if (Canvas.GetLeft(x) > 820) - { - Canvas.SetLeft(x, -80); - Canvas.SetTop(x, Canvas.GetTop(x) + (x.Height + 10)); - } - - Rect vihuHitBox = new Rect(Canvas.GetLeft(x), Canvas.GetTop(x), x.Width, x.Height); - - if (pelaajaHitBox.IntersectsWith(vihuHitBox)) - { - naytaPeliohi("Likaiset lautaset rikkoivat harjasi!"); - } } + //Koodi vihun luodin osumiseen pelaajaan ja pelaajan elämien menetys if (x is Rectangle && (string)x.Tag == "vihuLuoti") { Canvas.SetTop(x, Canvas.GetTop(x) + 10); @@ -153,48 +175,64 @@ namespace Tiskipeli { poistettavat.Add(x); pelaajaElamatMaara--; - - if (pelaajaElamatMaara <= 0) - { - pelaajaElamat.Content = "Elämiä: 0"; - naytaPeliohi("Likaiset lautaset rikkoivat harjasi liallaan!"); - } } } - } + } + //Poistaa ylimääräiset oliot kuten viholliset ja luodit + private void OlioidenPoisto() + { foreach (Rectangle i in poistettavat) { Tausta.Children.Remove(i); } + } + + + //Päivittää pelaajalle näkyvät tiedot ja vie koodin peliohi metodiin kun peli päättyy + private void PeliTilaTarkastus() + { + vihutJaljella.Content = "Vihollisia jäljellä: " + vihuMaara; + pelaajaElamat.Content = "Elämiä: " + pelaajaElamatMaara; if (vihuMaara < 10) { vihuNopeus = 8; } + if (vihuMaara < 3) + { + vihuNopeus = 12; + } + if (vihuMaara < 1) { vihutJaljella.Content = "Vihollisia jäljellä: 0"; naytaPeliohi("Voitit ja putsasit likaiset lautaset!"); } - + if (pelaajaElamatMaara <= 0) + { + pelaajaElamat.Content = "Elämiä: 0"; + naytaPeliohi("Likaiset lautaset rikkoivat harjasi liallaan!"); + } } + //Aliohjelma sille mitä tapahtuu kun liikkumisnappi on pohjassa private void KeyIsDown(object sender, KeyEventArgs e) { - if(e.Key == Key.Left) + if (e.Key == Key.Left) { meneVasen = true; } - if(e.Key == Key.Right) + if (e.Key == Key.Right) { meneOikea = true; } } + //Aliohjelma sille mitä tapahtuu kun liikkumisnappi ei ole enää pohjassa private void KeyIsUp(object sender, KeyEventArgs e) { if (e.Key == Key.Left) @@ -206,6 +244,7 @@ namespace Tiskipeli meneOikea = false; } + //Pelaajan ampumistoiminto if (e.Key == Key.Space) { @@ -225,13 +264,17 @@ namespace Tiskipeli } + //Pelin uudelleen aloittamis toiminto if (e.Key == Key.Enter && peliOhi == true) { System.Diagnostics.Process.Start(Application.ResourceAssembly.Location); Application.Current.Shutdown(); } + + } + //Aliohjelma vihun luoti oliolle ja sijainnille yms private void vihuLuodinTeko(double x, double y) { @@ -239,11 +282,11 @@ namespace Tiskipeli { Tag = "vihuLuoti", - Height = 40, - Width = 15, + Height = 30, + Width = 10, Fill = Brushes.Yellow, - Stroke = Brushes.Black, - StrokeThickness = 5 + Stroke = Brushes.Orange, + StrokeThickness = 10 }; @@ -254,15 +297,17 @@ namespace Tiskipeli } + //Aliohjelma vihu olion luontiin private void luoVihu(int limit) { int vasen = 0; vihuMaara = limit; + //Vihu olio ja sen kuva for (int i = 0; i < limit; i++) { - + ImageBrush vihuKuva = new ImageBrush(); Rectangle uusiVihu = new Rectangle @@ -283,12 +328,12 @@ namespace Tiskipeli } } + //Pelin lopettava aliohjelma joka myös päivittää pelin päälle tekstin riippuen hävisitkö vai voititko private void naytaPeliohi(string viesti) { peliOhi = true; peliAjastin.Stop(); vihutJaljella.Content += " " + viesti + " Paina Enter pelataksesi uudelleen"; } - } } diff --git a/Tiskipeli/Tiskipeli/Properties/AssemblyInfo.cs b/Tiskipeli/Tiskipeli/Properties/AssemblyInfo.cs index 8c33fefba5d9bbd9b206a41fe6a3cd9f799f3876..d274eff5d0f34a221c807f90bff29e591a9d72c3 100644 --- a/Tiskipeli/Tiskipeli/Properties/AssemblyInfo.cs +++ b/Tiskipeli/Tiskipeli/Properties/AssemblyInfo.cs @@ -7,11 +7,11 @@ using System.Windows; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Tiskipeli")] +[assembly: AssemblyTitle("Tiskipelitesti")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Tiskipeli")] +[assembly: AssemblyProduct("Tiskipelitesti")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/Tiskipeli/Tiskipeli/Properties/Resources.Designer.cs b/Tiskipeli/Tiskipeli/Properties/Resources.Designer.cs index 3b5adc539614075505196aa8cbf7f91da982cdde..49ce98094134cb6400cc2925904afd4028f7ba59 100644 --- a/Tiskipeli/Tiskipeli/Properties/Resources.Designer.cs +++ b/Tiskipeli/Tiskipeli/Properties/Resources.Designer.cs @@ -8,7 +8,7 @@ // </auto-generated> //------------------------------------------------------------------------------ -namespace Tiskipeli.Properties +namespace Tiskipelitesti.Properties { @@ -44,7 +44,7 @@ namespace Tiskipeli.Properties { if ((resourceMan == null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tiskipeli.Properties.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tiskipelitesti.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/Tiskipeli/Tiskipeli/Properties/Settings.Designer.cs b/Tiskipeli/Tiskipeli/Properties/Settings.Designer.cs index 2cf834dd395124ed7b428131238babd018f8a5d4..54b8c60b7cd332722f819172bf30473d3098d653 100644 --- a/Tiskipeli/Tiskipeli/Properties/Settings.Designer.cs +++ b/Tiskipeli/Tiskipeli/Properties/Settings.Designer.cs @@ -8,7 +8,7 @@ // </auto-generated> //------------------------------------------------------------------------------ -namespace Tiskipeli.Properties +namespace Tiskipelitesti.Properties { diff --git a/Tiskipeli/Tiskipeli/Tiskipeli.csproj b/Tiskipeli/Tiskipeli/Tiskipeli.csproj index e796f03e1fa01aa447553b7bd05b4ea57a528003..15d814cb55b632750c184fc94b48ccb0522c0823 100644 --- a/Tiskipeli/Tiskipeli/Tiskipeli.csproj +++ b/Tiskipeli/Tiskipeli/Tiskipeli.csproj @@ -4,10 +4,10 @@ <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{9523D3A0-13E0-4CEE-9871-FF19E1119F53}</ProjectGuid> + <ProjectGuid>{5588AD4F-15C7-4573-9D5A-6B3A10BA221F}</ProjectGuid> <OutputType>WinExe</OutputType> - <RootNamespace>Tiskipeli</RootNamespace> - <AssemblyName>Tiskipeli</AssemblyName> + <RootNamespace>Tiskipelitesti</RootNamespace> + <AssemblyName>Tiskipelitesti</AssemblyName> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> @@ -95,11 +95,11 @@ <None Include="App.config" /> </ItemGroup> <ItemGroup> - <Resource Include="Kuvat\lautanen.png" /> - <Resource Include="Kuvat\Tiskiharja.png" /> + <Resource Include="Kuvat\Tiskiallas.png" /> </ItemGroup> <ItemGroup> - <Resource Include="Kuvat\Tiskiallas.png" /> + <Resource Include="Kuvat\lautanen.png" /> + <Resource Include="Kuvat\Tiskiharja.png" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> \ No newline at end of file