From 517d031afcc4c03f4f43a95ba00ffe8fb5b730fb Mon Sep 17 00:00:00 2001 From: josisaku <josisaku@jyu.fi> Date: Thu, 27 Mar 2025 19:33:00 +0200 Subject: [PATCH] nappeja --- .../Financial_Freedom/Financial_Freedom.cs | 273 +++++++++++++++--- 1 file changed, 237 insertions(+), 36 deletions(-) diff --git a/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs b/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs index d62b43f..7ab923c 100644 --- a/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs +++ b/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs @@ -144,6 +144,9 @@ public class Financial_Freedom : PhysicsGame private List<Card> pakka = new List<Card>(); // Tehdään pakasta luokan kenttä private List<Card> pelaajanKortit = new List<Card>(); // Pelaajan kortit kentäksi private List<Card> jakajanKortit; // Jakajan kortit kentäksi + private PushButton staybutton; + private PushButton hitbutton; + private PushButton ddbutton; private List<string> clickLog = new List<string>(); //ruletin panostuksen clikkailulogi private GameObject doneButton = null; @@ -183,20 +186,23 @@ public class Financial_Freedom : PhysicsGame { var rulettitaskut = new List<RouletteBet>(); - int[] pockets = new int[] { + int[] pockets = + { 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 00, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29, 7, 28, 12, 35, 3, 26, 0, 32, 15, 19, 4, 21, 2, 25, 17, 34 }; // Värit: Vihreät 0 ja 00, muut ovat virallisesti määrättyjä. // Muut värit on asetettu siten, että annettu järjestys vastaa virallista ruletin väriä. - string[] colors = new string[] { + string[] colors = + { "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Vihreä", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Vihreä", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen", "Musta", "Punainen" }; - double[] anglet = new double[] { + double[] anglet = + { 349.19, 343.59, 335.44, 328.59, 315.09, 305.46, 295.42, 286.78, 280.64, 273.02, 263.29, 252.19, 236.73, 226.1, 211.09, 199.93, 188.91, 180.07, 173.39, 167.78, 154.57, 144.36, 133.26, 128.32, 120.23, 109.88, 99.42, 89.6, 84.32, 78.91, 67.66, 57.39, 43.43, 33.12, 27.18, 20.23, 10.44, 0.0 @@ -692,6 +698,7 @@ public class Financial_Freedom : PhysicsGame }; Add(uusi); peliKesken -= 1; + Loppunapit(); Keyboard.Listen(Key.P, ButtonState.Pressed, async () => await BlackJack(), "uus kiesi uudella panoksella"); // MUUTA MYÖHEMMIN KOSKA UUSI KIESI LUO UUDEN PAKAN Keyboard.Listen(Key.N, ButtonState.Pressed, async () => await EnsimmäinenBJ(), "uus kiesi"); TakaisinPV(); @@ -729,6 +736,7 @@ public class Financial_Freedom : PhysicsGame }; Add(uusi); peliKesken -= 1; + Loppunapit(); Keyboard.Listen(Key.P, ButtonState.Pressed, async () => await BlackJack(), "uus kiesi uudella panoksella"); // MUUTA MYÖHEMMIN KOSKA UUSI KIESI LUO UUDEN PAKAN Keyboard.Listen(Key.N, ButtonState.Pressed, async () => await EnsimmäinenBJ(), "uus kiesi"); TakaisinPV(); @@ -767,6 +775,10 @@ public class Financial_Freedom : PhysicsGame //Keyboard.Listen(Key.H, ButtonState.Pressed, DoubleDown, "Ottaa vielä yhden kortin ja tuplaa panoksen"); //} + bool dd = false; + int nappiwidth = 280; + int nappiheight = 100; + if(pistelaskuri>= panos) //DoubleDown mahdollisuus { bjVaihtoehdot = new Label("Haluatko ottaa vielä kortin (h), tuplata panoksen ja ottaa viimeisen kortin (d) vai pysyä tässä (s)?") @@ -776,8 +788,9 @@ public class Financial_Freedom : PhysicsGame }; Add(bjVaihtoehdot); Keyboard.Listen(Key.D, ButtonState.Pressed, async () => await DoubleDown(bjVaihtoehdot, pelaajanSummalab), "Ottaa vielä yhden kortin ja tuplaa panoksen"); + dd = true; } - + else { bjVaihtoehdot = new Label("Haluatko ottaa vielä kortin (h) vai pysyä tässä (s)?") @@ -788,10 +801,10 @@ public class Financial_Freedom : PhysicsGame Add(bjVaihtoehdot); } + AddHitStayDDButtons(dd); Keyboard.Listen(Key.S, ButtonState.Pressed, async () => await PysyTassa(bjVaihtoehdot, pelaajanSummalab), "Pysyy tässä"); Keyboard.Listen(Key.H, ButtonState.Pressed, async () => await OtaKortti(bjVaihtoehdot, pelaajanSummalab), "Ottaa vielä kortin"); - } } @@ -800,9 +813,14 @@ public class Financial_Freedom : PhysicsGame ClearControls(); Remove(bjV); Remove(sum); + Remove(ddbutton); + Remove(staybutton); + Remove(hitbutton); TakaisinPV(); aCountP = 0; aCountD = 0; + + bool dd = false; int korttiLeveys = 150; // Oletetaan, että kortin leveys on 100 yksikköä int xOffset = 50; // Etäisyys korttien välillä @@ -887,12 +905,16 @@ public class Financial_Freedom : PhysicsGame else if (pelaajanSumma < 21 && pistelaskuri >= panos) { + dd = true; Label bjVaihtoehdot2 = new Label("Haluatko ottaa vielä kortin (h), tuplata panoksen ja ottaa viimeisen kortin (d) vai pysyä tässä (s)?") { Color = Color.White, Position = new Vector(0, -75), // Asetetaan sijainti }; Add(bjVaihtoehdot2); + + AddHitStayDDButtons(dd); + Keyboard.Listen(Key.S, ButtonState.Pressed, async () => await PysyTassa(bjVaihtoehdot2, pelaajanSummalab), "Pysyy tässä"); Keyboard.Listen(Key.H, ButtonState.Pressed, async () => await OtaKortti(bjVaihtoehdot2, pelaajanSummalab), "Ottaa vielä kortin"); Keyboard.Listen(Key.D, ButtonState.Pressed, async () => await DoubleDown(bjVaihtoehdot2, pelaajanSummalab), "Ottaa vielä yhden kortin ja tuplaa panoksen"); @@ -906,6 +928,9 @@ public class Financial_Freedom : PhysicsGame Position = new Vector(0, -75), // Asetetaan sijainti }; Add(bjVaihtoehdot3); + + AddHitStayDDButtons(dd); + Keyboard.Listen(Key.S, ButtonState.Pressed, async () => await PysyTassa(bjVaihtoehdot3, pelaajanSummalab), "Pysyy tässä"); Keyboard.Listen(Key.H, ButtonState.Pressed, async () => await OtaKortti(bjVaihtoehdot3, pelaajanSummalab), "Ottaa vielä kortin"); } @@ -920,6 +945,7 @@ public class Financial_Freedom : PhysicsGame }; Add(Bust); peliKesken -= 1; + Loppunapit(); Keyboard.Listen(Key.P, ButtonState.Pressed, async () => await BlackJack(), "uus kiesi uudella panoksella"); // MUUTA MYÖHEMMIN KOSKA UUSI KIESI LUO UUDEN PAKAN Keyboard.Listen(Key.N, ButtonState.Pressed, async () => await EnsimmäinenBJ(), "uus kiesi"); TakaisinPV(); @@ -932,6 +958,9 @@ public class Financial_Freedom : PhysicsGame { Remove(bjV); Remove(sum); + Remove(ddbutton); + Remove(staybutton); + Remove(hitbutton); ClearControls(); TakaisinPV(); Console.WriteLine("panos "+panos); @@ -1023,6 +1052,7 @@ public class Financial_Freedom : PhysicsGame }; Add(Bust); peliKesken -= 1; + Loppunapit(); Keyboard.Listen(Key.P, ButtonState.Pressed, async () => await BlackJack(), "uus kiesi uudella panoksella"); // MUUTA MYÖHEMMIN KOSKA UUSI KIESI LUO UUDEN PAKAN Keyboard.Listen(Key.N, ButtonState.Pressed, async () => await EnsimmäinenBJ(), "uus kiesi"); TakaisinPV(); @@ -1035,6 +1065,9 @@ public class Financial_Freedom : PhysicsGame { Remove(bjV); Remove(sum); + Remove(ddbutton); + Remove(staybutton); + Remove(hitbutton); ClearControls(); TakaisinPV(); @@ -1090,9 +1123,42 @@ public class Financial_Freedom : PhysicsGame } + public void AddHitStayDDButtons(bool dd) + { + int nappiwidth = 350; + int nappiheight = 100; + + staybutton = new PushButton(nappiwidth, nappiheight, "Stay / Pysy Tässä"); + staybutton.Position = new Vector(Screen.Left+200, Screen.Height / 6); // vasen + staybutton.Size = new Vector(350, 100); + staybutton.TextScale = new Vector(2,2); + staybutton.Clicked += delegate { _ = PysyTassa(bjVaihtoehdot, pelaajanSummalab); Remove(staybutton);};; + Add(staybutton); + + hitbutton = new PushButton( nappiwidth, nappiheight, "Hit / Ota kortti"); + hitbutton.Position = new Vector(Screen.Right-200, Screen.Height / 6); // Oikealle, + hitbutton.Size = new Vector(350, 100); + hitbutton.TextScale = new Vector(2,2); + hitbutton.Clicked += delegate { _ = OtaKortti(bjVaihtoehdot, pelaajanSummalab); Remove(hitbutton);};; + Add(hitbutton); + + if (dd) + { + ddbutton = new PushButton(nappiwidth, nappiheight, "Double down / Tuplaa panos"); + ddbutton.Position = new Vector(Screen.Right-325, -Screen.Height / 6); // Oikealle alas + ddbutton.Size = new Vector(600, 100); + ddbutton.TextScale = new Vector(2,2); + ddbutton.Clicked += delegate { _ = DoubleDown(bjVaihtoehdot, pelaajanSummalab); };; + Add(ddbutton); + } + } + public async Task DealerFinish(Label sum) // lopettaa pelin jakajan vuoroon { Remove(sum); + Remove(ddbutton); + Remove(staybutton); + Remove(hitbutton); Card kortti; Image kortinKuva; int korttiLeveys = 150; // Oletetaan, että kortin leveys on 100 yksikköä @@ -1280,10 +1346,38 @@ public class Financial_Freedom : PhysicsGame }; Add(uusi); peliKesken -= 1; + Loppunapit(); Keyboard.Listen(Key.P, ButtonState.Pressed, async () => await BlackJack(), "uus kiesi uudella panoksella"); // MUUTA MYÖHEMMIN KOSKA UUSI KIESI LUO UUDEN PAKAN Keyboard.Listen(Key.N, ButtonState.Pressed, async () => await EnsimmäinenBJ(), "uus kiesi"); TakaisinPV(); } + + public void Loppunapit() + { + int nappiwidth = 350; + int nappiheight = 100; + + staybutton = new PushButton(nappiwidth, nappiheight, "Päävalikko"); + staybutton.Position = new Vector(Screen.Left+200, -Screen.Height / 6); // vasen + staybutton.Size = new Vector(350, 100); + staybutton.TextScale = new Vector(2,2); + staybutton.Clicked += delegate { _ = peliKesken = 0; ClearControls(); ClearGameObjects(); PelinValinta();}; + Add(staybutton); + + hitbutton = new PushButton( nappiwidth, nappiheight, "Vaihda panosta"); + hitbutton.Position = new Vector(Screen.Right-200, Screen.Height / 6); // Oikealle, + hitbutton.Size = new Vector(350, 100); + hitbutton.TextScale = new Vector(2,2); + hitbutton.Clicked += delegate { _ = BlackJack();}; + Add(hitbutton); + + ddbutton = new PushButton(nappiwidth, nappiheight, "Uusi kierros samalla panoksella"); + ddbutton.Position = new Vector(Screen.Right-350, -Screen.Height / 6); // Oikealle alas + ddbutton.Size = new Vector(650, 100); + ddbutton.TextScale = new Vector(2,2); + ddbutton.Clicked += delegate { _ = EnsimmäinenBJ();}; + Add(ddbutton); + } // Luo korttipakka public List<Card> LuoPakka() // luo korttipakan no shit sherlock @@ -2382,6 +2476,27 @@ public class Financial_Freedom : PhysicsGame TextScale = new Vector(2, 2) }; Add(veikkausLabel); + + double nappiwidth = 280; + double nappiheight = 100; + + PushButton kruuna = new PushButton(0,0,""); + PushButton klaava = new PushButton(0,0,""); + + kruuna = new PushButton(nappiwidth, nappiheight, "Kruuna"); + kruuna.Position = new Vector(Screen.Left+200, 0); // Oikealle + kruuna.Size = new Vector(280, 100); + kruuna.TextScale = new Vector(2,2); + kruuna.Clicked += delegate {Remove(veikkausLabel); Remove(kerroin); Remove(potti); HeitaKolikko(true, kruuna, klaava);};; + Add(kruuna); + + klaava = new PushButton( nappiwidth, nappiheight, "Klaava"); + klaava.Position = new Vector(Screen.Right-200, 0); // Oikealle, alemmaksi + klaava.Size = new Vector(280, 100); + klaava.TextScale = new Vector(2,2); + klaava.Clicked += delegate {Remove(veikkausLabel); Remove(kerroin); Remove(potti); HeitaKolikko(false, kruuna, klaava);}; + Add(klaava); + await Task.Delay(100); // Kuunnellaan näppäimistösyötteet, jolloin pelaaja voi valita kruunan ('K') tai klaavan ('C') Keyboard.Listen(Key.K, ButtonState.Pressed, () => @@ -2389,20 +2504,22 @@ public class Financial_Freedom : PhysicsGame Remove(veikkausLabel); Remove(kerroin); Remove(potti); - HeitaKolikko(true); + HeitaKolikko(true, kruuna, klaava); }, "Veikkaa kruuna"); Keyboard.Listen(Key.C, ButtonState.Pressed, () => { Remove(veikkausLabel); Remove(kerroin); Remove(potti); - HeitaKolikko(false); + HeitaKolikko(false, kruuna, klaava); }, "Veikkaa klaava"); } - private async Task HeitaKolikko(bool veikkausKruuna) + private async Task HeitaKolikko(bool veikkausKruuna, PushButton kruuna, PushButton klaava) { ClearControls(); + Remove(kruuna); + Remove(klaava); Random rand = new Random(); bool kolikkoKruuna = rand.Next(2) == 0; // Kruuna (true) vai Klaava (false) Console.WriteLine("kolikko kruuna "+kolikkoKruuna); @@ -2442,6 +2559,31 @@ public class Financial_Freedom : PhysicsGame TextScale = new Vector(1,1) }; Add(uusi); + + double nappiwidth = 280; + double nappiheight = 100; + + PushButton paavalikko = new PushButton(nappiwidth, nappiheight, "Päävalikko"); + paavalikko.Position = new Vector(Screen.Left+200, -Screen.Height / 6); // vasen + paavalikko.Size = new Vector(350, 100); + paavalikko.TextScale = new Vector(2,2); + paavalikko.Clicked += delegate { _ = peliKesken = 0; ClearControls(); ClearGameObjects(); PelinValinta();}; + Add(paavalikko); + + PushButton vaihdabet = new PushButton( nappiwidth, nappiheight, "Vaihda panosta"); + vaihdabet.Position = new Vector(Screen.Right-200, Screen.Height / 6); // Oikealle, + vaihdabet.Size = new Vector(350, 100); + vaihdabet.TextScale = new Vector(2,2); + vaihdabet.Clicked += delegate { _ = Coinflip();}; + Add(vaihdabet); + + PushButton samabet = new PushButton(nappiwidth, nappiheight, "Uusi kierros samalla panoksella"); + samabet.Position = new Vector(Screen.Right-350, -Screen.Height / 6); // Oikealle alas + samabet.Size = new Vector(650, 100); + samabet.TextScale = new Vector(2,2); + samabet.Clicked += delegate { Remove(uusi); Remove(paavalikko); Remove(vaihdabet); Remove(samabet); EnsimmäinenFlibidi(); }; + Add(samabet); + Keyboard.Listen(Key.P, ButtonState.Pressed, async () => { Remove(uusi); @@ -2535,6 +2677,30 @@ public class Financial_Freedom : PhysicsGame TextScale = new Vector(1,1) }; Add(JatkaCF); + + double nappiwidth = 280; + double nappiheight = 100; + + PushButton jatka = new PushButton(0,0,""); + PushButton lopeta = new PushButton(0,0,""); + + jatka = new PushButton(nappiwidth, nappiheight, "Jatka"); + jatka.Position = new Vector(Screen.Left+200, 0); // Oikealle + jatka.Size = new Vector(280, 100); + jatka.TextScale = new Vector(2,2); + jatka.Clicked += delegate {Remove(JatkaCF); Remove(kerroin); Remove(potti); Remove(jatka); Remove(lopeta); AsetaVeikkaus(); };; + Add(jatka); + + lopeta = new PushButton( nappiwidth, nappiheight, "Lopeta"); + lopeta.Position = new Vector(Screen.Right-200, 0); // Oikealle, alemmaksi + lopeta.Size = new Vector(280, 100); + lopeta.TextScale = new Vector(2,2); + lopeta.Clicked += delegate + { + Lopetaflip(JatkaCF, kerroin, potti, jatka, lopeta); + }; + Add(lopeta); + await Task.Delay(200); // Kuunnellaan pelaajan syöte - jos pelaaja haluaa jatkaa, peli jatkuu Keyboard.Listen(Key.J, ButtonState.Pressed, () => @@ -2542,6 +2708,7 @@ public class Financial_Freedom : PhysicsGame Remove(JatkaCF); Remove(kerroin); Remove(potti); + Remove(jatka); Remove(lopeta); // Pelaaja haluaa jatkaa, joten peli etenee AsetaVeikkaus(); // Asetetaan uusi veikkaus }, "Jatka peliä (J)"); @@ -2549,36 +2716,70 @@ public class Financial_Freedom : PhysicsGame // Jos pelaaja ei halua jatkaa, hän voi ottaa rahat Keyboard.Listen(Key.P, ButtonState.Pressed, () => { - ClearControls(); - peliKesken -= 1; - Remove(JatkaCF); - Remove(kerroin); - Remove(potti); - // Pelaaja ei halua jatkaa, ottaa kerätyt rahat - pistelaskuri.Value += Math.Round(keratytRahatCF * yTs, 2); // Lisää kerätyt rahat pelaajan saldolle - keratytRahatCF = 0; // Nollaa kerätyt rahat - MessageDisplay.Add($"Peli loppui. Rahasaldo: {pistelaskuri.Value}"); - Console.WriteLine($"Peli loppui. Rahasaldo: {pistelaskuri.Value}"); - Label uusi = new Label("Haluatko aloittaa uuden kierroksen samalla panoksella (n), vaihtaa panosta (p) vai poistua pelistä (0)?") - { - Color = Color.White, - Position = new Vector(0, -275), // Asetetaan sijainti - }; - Add(uusi); - Keyboard.Listen(Key.P, ButtonState.Pressed, async () => - { - Remove(uusi); - await Coinflip(); - }, "uus kiesi uudella panoksella"); // MUUTA MYÖHEMMIN KOSKA UUSI KIESI LUO UUDEN PAKAN - Keyboard.Listen(Key.N, ButtonState.Pressed, async () => - { - Remove(uusi); - await EnsimmäinenFlibidi(); - }, "uus kiesi"); - TakaisinPV(); // Siirtyy takaisin pelinvalintaan + Lopetaflip(JatkaCF, kerroin, potti, jatka, lopeta); }, "Ota rahat ja lopeta (P)"); } - + + + public void Lopetaflip(Label ljatkacf, Label lkerroin, Label lpotti, PushButton ljatka, PushButton llopeta) + { + ClearControls(); + peliKesken -= 1; + + Remove(ljatkacf); + Remove(lkerroin); + Remove(lpotti); + Remove(ljatka); + Remove(llopeta); + + // Pelaaja ei halua jatkaa, ottaa kerätyt rahat + pistelaskuri.Value += Math.Round(keratytRahatCF * yTs, 2); // Lisää kerätyt rahat pelaajan saldolle + keratytRahatCF = 0; // Nollaa kerätyt rahat + MessageDisplay.Add($"Peli loppui. Rahasaldo: {pistelaskuri.Value}"); + Console.WriteLine($"Peli loppui. Rahasaldo: {pistelaskuri.Value}"); + Label uusi = new Label("Haluatko aloittaa uuden kierroksen samalla panoksella (n), vaihtaa panosta (p) vai poistua pelistä (0)?") + { + Color = Color.White, + Position = new Vector(0, -275), // Asetetaan sijainti + }; + Add(uusi); + + int nappiwidth = 350; + int nappiheight = 100; + + PushButton paavalikko = new PushButton(nappiwidth, nappiheight, "Päävalikko"); + paavalikko.Position = new Vector(Screen.Left+200, -Screen.Height / 6); // vasen + paavalikko.Size = new Vector(350, 100); + paavalikko.TextScale = new Vector(2,2); + paavalikko.Clicked += delegate { _ = peliKesken = 0; ClearControls(); ClearGameObjects(); PelinValinta();}; + Add(paavalikko); + + PushButton vaihdabet = new PushButton( nappiwidth, nappiheight, "Vaihda panosta"); + vaihdabet.Position = new Vector(Screen.Right-200, Screen.Height / 6); // Oikealle, + vaihdabet.Size = new Vector(350, 100); + vaihdabet.TextScale = new Vector(2,2); + vaihdabet.Clicked += delegate { _ = Coinflip();}; + Add(vaihdabet); + + PushButton samabet = new PushButton(nappiwidth, nappiheight, "Uusi kierros samalla panoksella"); + samabet.Position = new Vector(Screen.Right-350, -Screen.Height / 6); // Oikealle alas + samabet.Size = new Vector(650, 100); + samabet.TextScale = new Vector(2,2); + samabet.Clicked += delegate { Remove(uusi); Remove(paavalikko); Remove(vaihdabet); Remove(samabet); EnsimmäinenFlibidi(); }; + Add(samabet); + + Keyboard.Listen(Key.P, ButtonState.Pressed, async () => + { + Remove(uusi); + await Coinflip(); + }, "uus kiesi uudella panoksella"); // MUUTA MYÖHEMMIN KOSKA UUSI KIESI LUO UUDEN PAKAN + Keyboard.Listen(Key.N, ButtonState.Pressed, async () => + { + Remove(uusi); + await EnsimmäinenFlibidi(); + }, "uus kiesi"); + TakaisinPV(); // Siirtyy takaisin pelinvalintaan + } void AddRaha() { -- GitLab