diff --git a/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs b/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs index 27e887bdfb45fdfff0a12fcdd5811d5e75f0379d..fcf84929c85431aea45a42c39da9029112cd8d82 100644 --- a/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs +++ b/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Transactions; using System.Drawing; +using System.IO; using System.Linq; using System.Security.Cryptography; using System.Threading.Tasks; @@ -23,19 +24,26 @@ using Window = Jypeli.Window; /// @author Miklas, Joonatan, Santeri /// @version 0.69.420 /// <summary> + /// Pelissä koitetaan pelastaa pelaajan poika joka on joutunut venäläisen mafian kidnappaamaksi. /// He vaativat lunnasrahoja joita sinulla ei ole ja päätät suunnata kasinolle tienaamaan /// Kasinolla voit voittaa 10000000% rahastasi takaisin mutta hävitä vain 100% joten sehän on kannattavaa /// Pelaa erilaisia minipelejä kasvattaen rahamäärääsi kohti miljardia 1 000 000 000€ -/// Kontrollit on peleissä näytetty merkinnöillä (*), peli vaatii suurimmilta osin näppäimistöä mutta joskus joudut käyttämään myös hiirtäsi. +/// Kontrollit on peleissä näytetty merkinnöillä (*nappi*), peli vaatii suurimmilta osin näppäimistöä mutta joskus joudut käyttämään myös hiirtäsi. ///Credits: -/// Miku: Plinko, Slots, yleinen ulkoasu +/// Miklas: Plinko, Slots, yleinen ulkoasu /// Joonatan: Blackjack, Coinflip, yleinen ulkoasu -/// Santeri: Ruletti(ei tehty), pelikorttien ja hedelmien kuvat +/// Santeri: Ruletti(ei tehty), kuvat(ei kaikki), aloitus ja lopetus kuvat (ei tehty) /// </summary> +//Seuraavaksi: +//minimi/maksimipanokset, slots ei minimiä mutta joku maksimi koska muuten op, plinko pieni minimi ei maksimia (ehkä) +//bj suurempi minimi ei max, cf sama?? + +//ruletti????? + namespace Financial_Freedom{ @@ -105,7 +113,14 @@ public class Financial_Freedom : PhysicsGame private bool tavoiteSaavutettu = false; private bool peliOhi = false; private double tavoiteRaha = 1000000000; + private double highScore = 0; + private double finalscore; private bool AloitusRaha = false; + private Timer aikaLaskuri; + private double lopetusAika; + private EasyHighScore topLista = new ("toplistsave.txt", 10); + + private bool voitto; private int pelaajanSumma; private int jakajanSumma; @@ -156,12 +171,24 @@ public class Financial_Freedom : PhysicsGame pistenaytto = new Label(); pistelaskuri.Value += 1000; AloitusRaha = true; + + topLista.EnterText = "Onnittelut, olet päässyt kymmenen parhaimman uhkapelaajan joukkoon! Syötä nimesi niin jäät historian kirjoihin."; + topLista.Text = "Parhaat uhkapelaajat"; + topLista.HighScoreWindow.Size = new Vector(300,500); + topLista.HighScoreWindow.Color = Color.Mint; + + LuoAikaLaskuri(); LuoPistelaskuri(); PelinValinta(); - } - + + private void LuoAikaLaskuri() + { + aikaLaskuri = new Timer(); + aikaLaskuri.Start(); + } + void LuoPistelaskuri() //luo pistelaskurin rahalle { pistenaytto.X = 0 ; @@ -192,17 +219,22 @@ public class Financial_Freedom : PhysicsGame // Tarkista, onko tavoite saavutettu TarkistaRahaTavoite(); + TarkistaScore(); } private void TarkistaRahaTavoite() { if (pistelaskuri == null) return; //Console.WriteLine("päästiin nullin läpi mennään if lauseeseen pelejä kesken: "+peliKesken); + + + // Tarkista vain, jos tavoitetta ei ole jo saavutettu if (pistelaskuri.Value >= tavoiteRaha && !tavoiteSaavutettu) { tavoiteSaavutettu = true; MessageDisplay.Add("Tavoite saavutettu!"); + LaskeScore(); Voitto(); } @@ -211,10 +243,43 @@ public class Financial_Freedom : PhysicsGame //Console.WriteLine("päästiin loppuun rahat nollassa ja avataan defeat"); peliOhi = true; MessageDisplay.Add("Luuseri"); + ClearAll(); + LaskeScore(); Defeat(); } //Console.WriteLine("päästiin defeatin ohi mitään ei tapahtunut"); } + + private void TarkistaScore() + { + if (peliKesken == 0) + { + if (pistelaskuri == null) return; + else if (pistelaskuri.Value > highScore) + { + highScore = pistelaskuri.Value; + Console.WriteLine("uusi highscore: "+highScore); + } + else + { + return; + } + } + else + { + return; + } + } + + private void LaskeScore() + { + lopetusAika = aikaLaskuri.SecondCounter.Value; + Console.WriteLine("lopetusaika on "+aikaLaskuri.SecondCounter.Value); + finalscore = Math.Round((highScore-1000)/lopetusAika, 2); + Console.WriteLine(highScore+"-1000 on "+ (highScore-1000)+" ja se jaetaan "+lopetusAika+" tulee "+((highScore-1000)/lopetusAika)); + Console.WriteLine("finalscore: "+finalscore); + } + //kuvien lataus Image taustakuvaPV = LoadImage("kasinoLobby.jpg"); @@ -570,7 +635,7 @@ public class Financial_Freedom : PhysicsGame pelaajanKortit.Add(uudetKortit[0]); pelaajanSumma = 0; - foreach (var card in pelaajanKortit) + foreach (var card in pelaajanKortit) // laskee summat ja ässät { Console.WriteLine("pelaajankortti "+card); if (card.BjCardValue == 11) @@ -586,10 +651,11 @@ public class Financial_Freedom : PhysicsGame foreach (var card in jakajanKortit) { Console.WriteLine("jakajan kortti: "+card); - if (card.BjCardValue == 11) aCountD++; // Lasketaan ässät + if (card.BjCardValue == 11) aCountD++; jakajanSumma += card.BjCardValue; } + //laskee ässät pois while (pelaajanSumma > 21 && aCountP > 0) { pelaajanSumma -= 10; @@ -602,6 +668,8 @@ public class Financial_Freedom : PhysicsGame aCountD--; } + + //kattoo insta 21 if (pelaajanSumma != 21) { pelaajanSummalab = new Label("Sinulla on "+ pelaajanSumma +" ja jakajalla on "+jakajanKortit[0].BjCardValue) @@ -658,8 +726,9 @@ public class Financial_Freedom : PhysicsGame } } - - public async Task DoubleDown(Label bjV, Label sum) + + // voit ottaa vielä viimeisen kortin ja tuplata panoksen, sen jälkeen et voi tehdä enää mitääm + public async Task DoubleDown(Label bjV, Label sum) { Remove(bjV); Remove(sum); @@ -762,7 +831,7 @@ public class Financial_Freedom : PhysicsGame else DealerFinish(pelaajanSummalab); } - public async Task PysyTassa(Label bjV, Label sum) + public async Task PysyTassa(Label bjV, Label sum) // olet tyytyväinen kortteihin { Remove(bjV); Remove(sum); @@ -821,7 +890,7 @@ public class Financial_Freedom : PhysicsGame } - public async Task DealerFinish(Label sum) + public async Task DealerFinish(Label sum) // lopettaa pelin jakajan vuoroon { Remove(sum); Card kortti; @@ -1057,7 +1126,7 @@ public class Financial_Freedom : PhysicsGame } // Luo korttipakka - public List<Card> LuoPakka() + public List<Card> LuoPakka() // luo korttipakan no shit sherlock { //var pakka = new List<Card>(); pakka.Clear(); @@ -1073,7 +1142,7 @@ public class Financial_Freedom : PhysicsGame //sekoittaa pakan - public static void SekoitaPakka(List<Card> pakka) + public static void SekoitaPakka(List<Card> pakka) // oisko vaikka että sekoittaa pakan { Random rand = new Random(); int n = pakka.Count; @@ -1086,7 +1155,7 @@ public class Financial_Freedom : PhysicsGame pakka[k] = temp; } } - public List<Card> JaaKortit(List<Card> pakka, int korttienMaara) + public List<Card> JaaKortit(List<Card> pakka, int korttienMaara) // kenties jakaa kortit { var jaetutKortit = new List<Card>(); Random random = new Random(); @@ -1105,14 +1174,14 @@ public class Financial_Freedom : PhysicsGame return jaetutKortit; } - public async Task VaihdaPanos() + public async Task VaihdaPanos() // hmmmmmm voisiko ehkä vaihtaa panosta { //esim plinkossa voi vaihtaa panosta lennosta InputWindow kysymysIkkuna = new InputWindow("Aseta Panos" ); kysymysIkkuna.TextEntered += ProcessInput; Add( kysymysIkkuna ); } - void ProcessInput( InputWindow ikkuna ) + void ProcessInput( InputWindow ikkuna ) // prosessoi inputin kun panos on asetettu { string vastaus = ikkuna.InputBox.Text; if (double.TryParse(vastaus, out panos) && panos > 0 && panos <= pistelaskuri.Value) @@ -1236,8 +1305,8 @@ public class Financial_Freedom : PhysicsGame }; PisteAntaja(0, 200, (0.25*tsplinko * yTs), ptpallo); - PisteAntaja(177, 150, (0.9*tsplinko * yTs), ptpallo); - PisteAntaja(-177, 150, (0.9*tsplinko * yTs), ptpallo); + PisteAntaja(177, 150, (0.75*tsplinko * yTs), ptpallo); + PisteAntaja(-177, 150, (0.75*tsplinko * yTs), ptpallo); PisteAntaja(316, 125, (2.5*tsplinko * yTs),ptpallo); PisteAntaja(-316, 125, (2.5*tsplinko * yTs), ptpallo); PisteAntaja(430, 100, (5*tsplinko * yTs), ptpallo); @@ -1885,58 +1954,58 @@ public class Financial_Freedom : PhysicsGame } async Task Voitto() { + Console.WriteLine(finalscore); + voitto = true; ClearAll(); - await Task.Delay(100); - Label uusi = new Label("Voitit Pelin!!!") - { - Color = Color.White, - Position = new Vector(0, 0), // Asetetaan sijainti - TextScale = new Vector(3, 3) - }; - Add(uusi); - Label uusi3 = new Label("Yritä uudelleen (N) tai luovuta (Esc)") - { - Color = Color.Transparent, - TextColor = Color.Violet, - Position = new Vector(0, Level.Bottom+50), // Asetetaan sijainti - TextScale = new Vector(3, 3) - }; - Add(uusi3); - Keyboard.Listen(Key.Escape, ButtonState.Pressed, () => - { - ClearAll(); - Exit(); - }, "ulos"); - Keyboard.Listen(Key.N, ButtonState.Pressed, () => - { - ClearAll(); - peliKesken = 0; - peliOhi = false; - pistelaskuri = null; - Begin(); - }, "uus kiesi"); + ScoreBoard(); } async Task Defeat() { - await Task.Delay(2000); + Console.WriteLine(finalscore); + ClearAll(); + ScoreBoard(); // Odotetaan, kunnes panos on asetettu + } + + private void ScoreBoard() + { + topLista.EnterAndShow(finalscore); + topLista.HighScoreWindow.Closed += loppuTekstit; + } + + private void loppuTekstit(Window sender) + { ClearAll(); - Console.WriteLine("hävisit pelin"); - Label uusi = new Label("Hävisit pelin") + if (voitto) { - Color = Color.White, - Position = new Vector(0, 25), // Asetetaan sijainti - TextScale = new Vector(3, 3) - }; - Add(uusi); - Label uusi2 = new Label("Poikasi teloitettiin.") + Label uusi = new Label("Voitit Pelin!!!") + { + Color = Color.White, + Position = new Vector(0, 0), // Asetetaan sijainti + TextScale = new Vector(3, 3) + }; + Add(uusi); + } + else { - Color = Color.Transparent, - TextColor = Color.Red, - Position = new Vector(0, -50), // Asetetaan sijainti - TextScale = new Vector(3, 3) - }; - Add(uusi2); - Label uusi3 = new Label("Yritä uudelleen (N) tai luovuta (Esc)") + Console.WriteLine("hävisit pelin"); + Label uusi = new Label("Hävisit pelin") + { + Color = Color.White, + Position = new Vector(0, 25), // Asetetaan sijainti + TextScale = new Vector(3, 3) + }; + Add(uusi); + Label uusi2 = new Label("Poikasi teloitettiin.") + { + Color = Color.Transparent, + TextColor = Color.Red, + Position = new Vector(0, -50), // Asetetaan sijainti + TextScale = new Vector(3, 3) + }; + Add(uusi2); + } + Task.Delay(100); + Label uusi3 = new Label("Yritä uudelleen (N), katso parhaat pisteet (S) tai luovuta (Esc)") { Color = Color.Transparent, TextColor = Color.Violet, @@ -1944,11 +2013,24 @@ public class Financial_Freedom : PhysicsGame TextScale = new Vector(3, 3) }; Add(uusi3); + Label uusi4 = new Label("Sait "+finalscore+" pistettä") + { + Color = Color.Transparent, + TextColor = Color.Green, + Position = new Vector(0, Level.Bottom+200), // Asetetaan sijainti + TextScale = new Vector(3, 3) + }; + Add(uusi4); Keyboard.Listen(Key.Escape, ButtonState.Pressed, () => { ClearAll(); Exit(); }, "ulos"); + Keyboard.Listen(Key.S, ButtonState.Pressed, () => + { + topLista.Show(); + topLista.HighScoreWindow.Position = new Vector(Screen.Right-225,0); + }, "Scoreboard"); Keyboard.Listen(Key.N, ButtonState.Pressed, () => { ClearAll();