diff --git a/Financial_Freedom/Financial_Freedom/Content/slotBG.png b/Financial_Freedom/Financial_Freedom/Content/slotBG.png new file mode 100644 index 0000000000000000000000000000000000000000..830606de2e4efd4d67770a8bea7787233547cc46 Binary files /dev/null and b/Financial_Freedom/Financial_Freedom/Content/slotBG.png differ diff --git a/Financial_Freedom/Financial_Freedom/Content/tyhjatausta.png b/Financial_Freedom/Financial_Freedom/Content/tyhjatausta.png new file mode 100644 index 0000000000000000000000000000000000000000..280534f0a2659de0aa4f48669376bbe67f7900e2 Binary files /dev/null and b/Financial_Freedom/Financial_Freedom/Content/tyhjatausta.png differ diff --git a/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs b/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs index eac9292abf30eed5c862b439c35cc08c906c33d2..e9a9194984a3ae520c7eb8d54364a1e871277f55 100644 --- a/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs +++ b/Financial_Freedom/Financial_Freedom/Financial_Freedom.cs @@ -107,6 +107,25 @@ public class RouletteBet } } +public class RBetAmounts +{ + // Esim. betType voi olla numero ("36") tai sana ("Red") + public string BetType { get; set; } + // Panostettu rahamäärä + public double Amount { get; set; } + + public RBetAmounts(string betType, double amount) + { + BetType = betType; + Amount = amount; + } + + public override string ToString() + { + return $"{BetType}: {Amount}"; + } +} + public class Financial_Freedom : PhysicsGame //alustellaan muuttujat @@ -115,8 +134,10 @@ public class Financial_Freedom : PhysicsGame private double tsplinko = (1); //suurinpiirtein takaisinsaantikerroin plinkoalustoissa 0.85 kontrollikerroin DoubleMeter pistelaskuri; //heitäppä villi veikkaus mikä tämä voisi olla private Label panosLabel; // Label, joka näyttää panoksen no shit + private Label titleLabel; //panoksen titlelabel private double panos; // Alkustus panokselle private TaskCompletionSource<bool> panosAsetettu; + private bool removePanosLabelAfterPanos; // Tämä kenttä tallentaa, poistetaanko labelit private Label pistenaytto; private GameObject coinObject; private TaskCompletionSource<bool> animaatioValmis; @@ -127,6 +148,7 @@ public class Financial_Freedom : PhysicsGame private List<string> clickLog = new List<string>(); //ruletin panostuksen clikkailulogi private GameObject doneButton = null; private double realangle; + private List<RBetAmounts> bets = new List<RBetAmounts>(); private int peliKesken = 0; @@ -169,9 +191,9 @@ public class Financial_Freedom : PhysicsGame // 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[] { - "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red", "Green", - "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Green", - "Red", "Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red" + "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[] { @@ -384,6 +406,63 @@ public class Financial_Freedom : PhysicsGame Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli"); } + /// <summary> + /// luo suorakulmion annettun kokoon ja paikkaan + /// </summary> + /// <param name="peli"></param> + /// <param name="width">logon leveys</param> + /// <param name="height">logon korkeus</param> + /// <param name="x">logon paikka</param> + /// <param name="y">logon paikka</param> + public void MiniPeliLogo(Game peli, double width, double height, double x, double y, string kuva, int order) + { + PhysicsObject p = new PhysicsObject(width, height, Shape.Rectangle, x, y) + { + Position = new Vector(x, y), + Image = LoadImage(kuva), + Tag = order // Käytetään tagia tunnistamiseen + }; + p.Image = LoadImage(kuva); + Label iconLab = new Label(kuva+$" ({order})") + { + Color = Color.White, + Position = new Vector(x, y-90), // Asetetaan sijainti + }; + + // Klikkaustoiminto: Kun objektia klikataan, siirrytään peliin + Mouse.ListenOn(p, MouseButton.Left, ButtonState.Pressed, () => ValitsePeli(order), "Siirry peliin"); + + + peli.Add(p); + peli.Add(iconLab); + + } + + public async void ValitsePeli(int order) + { + switch (order) + { + case 1: + await Plinko(); + break; + case 2: + await BlackJack(); + break; + case 3: + await Ruletti(); + break; + case 4: + await Slots(); + break; + case 5: + await Coinflip(); + break; + default: + MessageDisplay.Add("Tuntematon peli!"); + break; + } + } + /// <summary> /// Blackjack peli, panosken asetus, peli ja tulosten lasku @@ -397,7 +476,7 @@ public class Financial_Freedom : PhysicsGame ClearControls(); Remove(pistenaytto); Add(pistenaytto); - await LisaaPanos(); // Odotetaan, kunnes panos on asetettu + await LisaaPanos(false); // Odotetaan, kunnes panos on asetettu panosAsetettu.TrySetResult(true); // Varmistetaan, että odotus päättyy TakaisinPV(); @@ -406,10 +485,11 @@ public class Financial_Freedom : PhysicsGame EnsimmäinenBJ(); } - public async Task LisaaPanos() + public async Task LisaaPanos(bool removeLabels) { + removePanosLabelAfterPanos = removeLabels; // Ylhäällä keskellä oleva teksti "Aseta panos" - Label titleLabel = new Label("Aseta panos") + titleLabel = new Label("Aseta panos") { Color = Color.White, Position = new Vector(0, 200), // Asetetaan sijainti @@ -428,10 +508,65 @@ public class Financial_Freedom : PhysicsGame kysymysIkkuna.TextEntered += ProcessInput; Add( kysymysIkkuna ); await panosAsetettu.Task; + if (removePanosLabelAfterPanos == true) {Remove(panosLabel); } Remove(titleLabel); + Console.WriteLine("lisaapanos = loppu"); } - + 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 ) // prosessoi inputin kun panos on asetettu + { + string vastaus = ikkuna.InputBox.Text; + if (double.TryParse(vastaus, out panos) && panos > 0 && panos <= pistelaskuri.Value) + { + panosLabel.Text = "Panos: " + Math.Round(panos, 2); // Update the display label + + MessageDisplay.Add("Panos hyväksytty: " + panos); + + panosAsetettu.TrySetResult(true); + // Lisää logiikka panoksen käyttämiseksi pelissä + } + else if (vastaus == "max" || vastaus == "m" || vastaus == "a" || vastaus == "allin" || vastaus == "all in" || vastaus == "all" || vastaus == "kaikki" || vastaus == "inshallah" || vastaus == "0" && panos > 0 && panos < pistelaskuri.Value) //AllIn + { + panos = pistelaskuri.Value; + + panosLabel.Text = "Panos: " + Math.Round(panos, 2); // Update the display label + + MessageDisplay.Add("Panos hyväksytty: " + panos); + + panosAsetettu.TrySetResult(true); + // Lisää logiikka panoksen käyttämiseksi pelissä + } + else if (vastaus == "half" || vastaus == "h" || vastaus == "puolet" || vastaus == "p" || vastaus == "1/2" || vastaus == "^" && panos > 0 && panos < pistelaskuri.Value) //puolet inee + { + panos = pistelaskuri.Value/2; + + panosLabel.Text = "Panos: " + Math.Round(panos, 2); // Update the display label + + MessageDisplay.Add("Panos hyväksytty: " + panos); + + panosAsetettu.TrySetResult(true); + // Lisää logiikka panoksen käyttämiseksi pelissä + } + else + { + MessageDisplay.Add("Virheellinen panos. Aseta panos johon sinulla on varaa ja joka on positiivinen luku."); + Remove(ikkuna); + Remove(titleLabel); + Remove(panosLabel); + Keyboard.Listen(Key.P, ButtonState.Pressed, async () => await VaihdaPanos(), "vaihtaa panoksen"); + TakaisinPV(); + + } + } + + public async Task EnsimmäinenBJ() { ClearGameObjects(); @@ -1199,52 +1334,6 @@ public class Financial_Freedom : PhysicsGame return jaetutKortit; } - 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 ) // prosessoi inputin kun panos on asetettu - { - string vastaus = ikkuna.InputBox.Text; - if (double.TryParse(vastaus, out panos) && panos > 0 && panos <= pistelaskuri.Value) - { - panosLabel.Text = "Panos: " + Math.Round(panos, 2); // Update the display label - - MessageDisplay.Add("Panos hyväksytty: " + panos); - panosAsetettu.TrySetResult(true); - // Lisää logiikka panoksen käyttämiseksi pelissä - } - else if (vastaus == "max" || vastaus == "m" || vastaus == "a" || vastaus == "allin" || vastaus == "all in" || vastaus == "all" || vastaus == "kaikki" || vastaus == "inshallah" || vastaus == "0" && panos > 0 && panos < pistelaskuri.Value) //AllIn - { - panos = pistelaskuri.Value; - - panosLabel.Text = "Panos: " + Math.Round(panos, 2); // Update the display label - - MessageDisplay.Add("Panos hyväksytty: " + panos); - panosAsetettu.TrySetResult(true); - // Lisää logiikka panoksen käyttämiseksi pelissä - } - else if (vastaus == "half" || vastaus == "h" || vastaus == "puolet" || vastaus == "p" || vastaus == "1/2" || vastaus == "^" && panos > 0 && panos < pistelaskuri.Value) //puolet inee - { - panos = pistelaskuri.Value/2; - - panosLabel.Text = "Panos: " + Math.Round(panos, 2); // Update the display label - - MessageDisplay.Add("Panos hyväksytty: " + panos); - panosAsetettu.TrySetResult(true); - // Lisää logiikka panoksen käyttämiseksi pelissä - } - else - { - MessageDisplay.Add("Virheellinen panos. Aseta panos johon sinulla on varaa ja joka on positiivinen luku."); - Keyboard.Listen(Key.P, ButtonState.Pressed, async () => await VaihdaPanos(), "vaihtaa panoksen"); - TakaisinPV(); - - } - } /// <summary> @@ -1256,7 +1345,7 @@ public class Financial_Freedom : PhysicsGame ClearControls(); ClearGameObjects(); Add(pistenaytto); - await LisaaPanos(); // Odotetaan, kunnes panos on asetettu + await LisaaPanos(false); // Odotetaan, kunnes panos on asetettu panosAsetettu.TrySetResult(true); // Varmistetaan, että odotus päättyy panosLabel.Position = new Vector(0, Level.Top - 60); panosLabel.TextScale = new Vector(2,2); @@ -1264,6 +1353,7 @@ public class Financial_Freedom : PhysicsGame panosLabel.Color = Color.Transparent; + Level.Background.Image = taustakuvaPlinko; @@ -1409,6 +1499,7 @@ public class Financial_Freedom : PhysicsGame public async Task Ruletti() { panosAsetettu = new TaskCompletionSource<bool>(false); + bets = new List<RBetAmounts>(); ClearGameObjects(); ClearControls(); @@ -1416,8 +1507,6 @@ public class Financial_Freedom : PhysicsGame Level.Background.Width = Screen.Width; Level.Background.Height = Screen.Height; Add(pistenaytto); - await LisaaPanos(); - panosAsetettu.TrySetResult(true); await LuoPanostusAlue(); @@ -1440,12 +1529,12 @@ public class Financial_Freedom : PhysicsGame ClearControls(); Add(pistenaytto); - Label ohjeet = new Label(1100, 35, "Klikkaa mihin haluat asettaa panoksesi. Jos klikkaat montaa kohtaa niin panos jaetaan niiden välille tasan."); + /*Label ohjeet = new Label(1100, 35, "Klikkaa mihin haluat asettaa panoksesi. Jos klikkaat montaa kohtaa niin panos jaetaan niiden välille tasan."); ohjeet.Color = Color.SkyBlue; ohjeet.TextColor = Color.Black; ohjeet.Position = new Vector(Screen.Right-575, Screen.Top-25); Add(ohjeet); - + */ // Tausta panostusalueelle @@ -1473,7 +1562,7 @@ public class Financial_Freedom : PhysicsGame for (int i = 0; i < totalButtons; i++) { - int currentNumber = i+1; // pitää skipata 0 toistaiseksi, niille myöhemmin omat napit + int currentNumber = i+1; int row = i / buttonsPerRow; int col = i % buttonsPerRow; @@ -1517,13 +1606,18 @@ public class Financial_Freedom : PhysicsGame numeroPanos.Add(numeroLabel); // Rekisteröidään napin hiiriklikkaus käyttäen paikallista muuttujaa - Mouse.Listen(MouseButton.Left, ButtonState.Pressed, () => + Mouse.Listen(MouseButton.Left, ButtonState.Pressed, async () => { if (numeroPanos.IsInside(Mouse.PositionOnScreen)) { + panosAsetettu = new TaskCompletionSource<bool>(false); // Tallennetaan vain numero välimuistiin clickLog.Add(numeroPanos.Tag.ToString()); - AsetaPanos((int)numeroPanos.Tag); + await LisaaPanos(true); + panosAsetettu.TrySetResult(true); + double currentbet = panos; + pistelaskuri.Value -= currentbet; + AsetaPanos(numeroPanos.ToString(), currentbet); if (doneButton == null) { CreateDoneButton(); @@ -1544,13 +1638,18 @@ public class Financial_Freedom : PhysicsGame gOLabel.Position = new Vector(startX+52, startY+60); gOPanos.Add(gOLabel); - Mouse.Listen(MouseButton.Left, ButtonState.Pressed, () => + Mouse.Listen(MouseButton.Left, ButtonState.Pressed, async () => { if (gOPanos.IsInside(Mouse.PositionOnScreen)) { + panosAsetettu = new TaskCompletionSource<bool>(false); // Tallennetaan nolla välimuistiin clickLog.Add("0"); - AsetaPanosNollat("0"); + await LisaaPanos(true); + panosAsetettu.TrySetResult(true); + double currentbet = panos; + pistelaskuri.Value -= currentbet; + AsetaPanosNollat("0", currentbet); if (doneButton == null) { CreateDoneButton(); @@ -1570,13 +1669,18 @@ public class Financial_Freedom : PhysicsGame gO0Label.Position = new Vector(startX+220, startY+60); gO0Panos.Add(gO0Label); - Mouse.Listen(MouseButton.Left, ButtonState.Pressed, () => + Mouse.Listen(MouseButton.Left, ButtonState.Pressed, async () => { if (gO0Panos.IsInside(Mouse.PositionOnScreen)) { + panosAsetettu = new TaskCompletionSource<bool>(false); // Tallennetaan tuplanolla välimuistiin clickLog.Add("00"); - AsetaPanosNollat("00"); + await LisaaPanos(true); + panosAsetettu.TrySetResult(true); + double currentbet = panos; + pistelaskuri.Value -= currentbet; + AsetaPanosNollat("00", currentbet); if (doneButton == null) { CreateDoneButton(); @@ -1596,13 +1700,18 @@ public class Financial_Freedom : PhysicsGame punainenLabel.Position = new Vector(startX+52, startY+125); punainenPanos.Add(punainenLabel); - Mouse.Listen(MouseButton.Left, ButtonState.Pressed, () => + Mouse.Listen(MouseButton.Left, ButtonState.Pressed, async () => { if (punainenPanos.IsInside(Mouse.PositionOnScreen)) { + panosAsetettu = new TaskCompletionSource<bool>(false); // Tallennetaan värin nimi välimuistiin - clickLog.Add("Red"); - AsetaPanosVärille("Punainen"); + clickLog.Add("Punainen"); + await LisaaPanos(true); + panosAsetettu.TrySetResult(true); + double currentbet = panos; + pistelaskuri.Value -= currentbet; + await AsetaPanosVärille("Punainen", currentbet); if (doneButton == null) { CreateDoneButton(); @@ -1622,13 +1731,18 @@ public class Financial_Freedom : PhysicsGame mustaLabel.Position = new Vector(startX+220, startY+125); mustaPanos.Add(mustaLabel); - Mouse.Listen(MouseButton.Left, ButtonState.Pressed, () => + Mouse.Listen(MouseButton.Left, ButtonState.Pressed, async () => { if (mustaPanos.IsInside(Mouse.PositionOnScreen)) { + panosAsetettu = new TaskCompletionSource<bool>(false); // Tallennetaan värin nimi välimuistiin - clickLog.Add("Black"); - AsetaPanosVärille("Musta"); + clickLog.Add("Musta"); + await LisaaPanos(true); + panosAsetettu.TrySetResult(true); + double currentbet = panos; + pistelaskuri.Value -= currentbet; + AsetaPanosVärille("Musta", currentbet); if (doneButton == null) { CreateDoneButton(); @@ -1658,26 +1772,75 @@ public class Financial_Freedom : PhysicsGame if (Done.IsInside(Mouse.PositionOnScreen)) { peliKesken += 1; - panosAsetettu.TrySetResult(true); - pistelaskuri.Value -= panos; + //panosAsetettu.TrySetResult(true); RulettiPyöritys(); } - }, "Aseta panos värille Musta"); + }, ""); } - - void AsetaPanos(int numero) + + async Task AsetaPanos(string numero, double bet) { - MessageDisplay.Add($"Panos asetettu numeroon {numero}!"); + if (bet <= 0.0) + { + return; + } + var existingBet = bets.FirstOrDefault(b => b.BetType == numero); + if (existingBet != null) + { + existingBet.Amount += bet; + } + else + { + bets.Add(new RBetAmounts(numero.ToString(), bet)); + } + + panosLabel.Clear(); + panos = 0; + MessageDisplay.Add($"Panos {bet} asetettu numeroon {numero.ToString()}!"); } - void AsetaPanosVärille(string väri) + async Task AsetaPanosVärille(string vari, double bet) { - MessageDisplay.Add($"Panos asetettu värille {väri}!"); + if (bet <= 0.0) + { + return; + } + var existingBet = bets.FirstOrDefault(b => b.BetType.Equals(vari, StringComparison.OrdinalIgnoreCase)); + if (existingBet != null) + { + // Lisätään panos olemassa olevaan määrään + existingBet.Amount += bet; + } + else + { + // Lisätään uusi panoslistaan + bets.Add(new RBetAmounts(vari, bet)); + } + + panosLabel.Clear(); + panos = 0; + MessageDisplay.Add($"Panos {bet} asetettu värille {vari}!"); } - void AsetaPanosNollat(string nolla) + async Task AsetaPanosNollat(string nolla, double bet) { - MessageDisplay.Add($"Panos asetettu numerolle {nolla}!"); + if (bet <= 0.0) + { + return; + } + var existingBet = bets.FirstOrDefault(b => b.BetType == nolla); + if (existingBet != null) + { + existingBet.Amount += bet; + } + else + { + bets.Add(new RBetAmounts(nolla, bet)); + } + + panosLabel.Clear(); + panos = 0; + MessageDisplay.Add($"Panos {bet} asetettu numerolle {nolla}!"); } void RulettiPyöritys() @@ -1691,7 +1854,7 @@ public class Financial_Freedom : PhysicsGame Console.WriteLine($"Panokset on jaettu kohtiin:{string.Join(", ", clickLog)}"); Console.WriteLine($"Panos per kohde on {panos} jaettuna {clickLog.Count} on {panos/clickLog.Count}"); - RulettiLauta(this, 850, 25, 40, 0, 0); + RulettiLauta(this, 850, 20, 30, 0, 0); TakaisinPV(); } @@ -1769,6 +1932,8 @@ public class Financial_Freedom : PhysicsGame } public async Task rulepisteenlasku(PhysicsObject transpallo, PhysicsObject pelilauta, List<Angle> checkAngles) { + double payout = 0; + bool voitto = false; var rulettitaskut = CreateRouletteBets(); realangle = (transpallo.Angle.Degrees - pelilauta.Angle.Degrees) % 360; Console.WriteLine(transpallo.Angle.GetPositiveDegrees()); @@ -1780,6 +1945,14 @@ public class Financial_Freedom : PhysicsGame string voittovari = ""; int pallosijainti = (int)palloangle(realangle); + foreach (var rouletteBet in rulettitaskut) + { + if (rouletteBet.Pocket == pallosijainti) + { + voittovari = rouletteBet.Color; + break; + } + } Console.WriteLine($"Se TOIMIIIIIII {palloangle(realangle)}"); @@ -1789,54 +1962,87 @@ public class Financial_Freedom : PhysicsGame List<int> numbers = new List<int>(); List<string> colors = new List<string>(); - // Käydään läpi alkuperäinen lista - foreach (var i in clickLog) + foreach (var bet in bets) { - // Tarkistetaan, onko item numero - if (int.TryParse(i, out int result)) + // Tarkastetaan, onko panos numeropanoksessa + if (int.TryParse(bet.BetType, out int betNumber)) { - // Jos on numero, lisätään numerolistaan - numbers.Add(result); - } - else - { - // Jos ei ole numero, lisätään värilistaan - colors.Add(i); + if (betNumber == pallosijainti) + { + // Oletetaan, että yksittäinen numeropanos maksaa 36-kertaisesti + payout = bet.Amount * 36; + pistelaskuri.Value += payout; + voitto = true; + MessageDisplay.Add($"Numeropanoksesta voitit: +{payout}"); + } } - } - - foreach (var i in numbers) - { - if (i == pallosijainti) + else // Muut panokset, esim. väri { - pistelaskuri.Value += panos/clickLog.Count*36; - } - } - - foreach (var rouletteBet in rulettitaskut) - { - if (rouletteBet.Pocket == pallosijainti) - { - voittovari = rouletteBet.Color; - Console.WriteLine($"Voittava väri on: {rouletteBet.Color}"); - foreach (var i in colors) + // Vertaillaan värin nimiä (huomioi mahdolliset eri nimitykset) + if (bet.BetType.Equals(voittovari, StringComparison.OrdinalIgnoreCase)) /*|| + (bet.BetType.Equals("Punainen", StringComparison.OrdinalIgnoreCase) && voittovari.Equals("Red", StringComparison.OrdinalIgnoreCase)) || + (bet.BetType.Equals("Musta", StringComparison.OrdinalIgnoreCase) && voittovari.Equals("Black", StringComparison.OrdinalIgnoreCase)))*/ + { + // Esim. väri maksaa 2-kertaisesti + payout = bet.Amount * 2; + pistelaskuri.Value += payout; + voitto = true; + MessageDisplay.Add($"Väripanoksesta voitit: +{payout}"); + } + else if (bet.BetType == "0" || bet.BetType == "00") { - if (i == voittovari) + // Esimerkiksi nollille voi olla oma kerroin (tarkista pelin säännöt) + payout = bet.Amount * 50; + // Jos voittava numero on 0 tai 00 + if (pallosijainti.ToString() == bet.BetType) { - // Voittajaväriin on laitettu rahaa! - // Tee jotain, esimerkiksi päivitä pistelaskuria - pistelaskuri.Value += panos / clickLog.Count * 2; - Console.WriteLine("Voitto"); - break; // Poistu silmukasta, kun voittava väri on löydetty + pistelaskuri.Value += payout; + voitto = true; + MessageDisplay.Add($"Nollapanoksesta voitit: +{payout}"); } } - break; } } + bets = null; peliKesken -= 1; + + Label tulosTeksti = new Label(); + tulosTeksti.TextColor = Color.LimeGreen; + tulosTeksti.Color = Color.Black; + tulosTeksti.Position = new Vector(-Screen.Width / 3, Screen.Height / 4); // Vasemmalle ylös + if (voitto){tulosTeksti.Text = $"Numero: {pallosijainti}\nVäri: {voittovari}\nVoittosumma: {payout}€";} + else {tulosTeksti.Text = $"Numero: {pallosijainti}\nVäri: {voittovari}\nHävisit (luuseri) :DD";} + + tulosTeksti.TextScale = new Vector( 2, 2); + Add(tulosTeksti); + + double nappiwidth = 280; + double nappiheight = 100; + + PushButton uusiPeliNappi = new PushButton(nappiwidth, nappiheight, "Uusi peli"); + uusiPeliNappi.Position = new Vector(Screen.Right-200, Screen.Height / 6); // Oikealle + uusiPeliNappi.Size = new Vector(280, 100); + uusiPeliNappi.TextScale = new Vector(2,2); + uusiPeliNappi.Clicked += delegate { _ = Ruletti(); };; + Add(uusiPeliNappi); + + PushButton valikkoNappi = new PushButton( nappiwidth, nappiheight, "Päävalikko"); + valikkoNappi.Position = new Vector(Screen.Right-200, -Screen.Height / 6); // Oikealle, alemmaksi + valikkoNappi.Size = new Vector(280, 100); + valikkoNappi.TextScale = new Vector(2,2); + valikkoNappi.Clicked += RultoPV; + Add(valikkoNappi); + TakaisinPV(); } + public void RultoPV() + { + ClearControls(); + ClearGameObjects(); + PelinValinta(); + } + public double palloangle(double realangle) { var rulettitaskut = CreateRouletteBets(); @@ -1861,11 +2067,18 @@ public class Financial_Freedom : PhysicsGame public async Task Slots() { + Image tyhja = LoadImage("tyhjatausta.png"); + Level.Background.Image = tyhja; + Widget overlay = new Widget(Screen.Width, Screen.Height); // Kuvan koko (leveys, korkeus) + overlay.Image = LoadImage("slotBG.png"); + + Add(overlay); + panosAsetettu = new TaskCompletionSource<bool>(false); ClearGameObjects(); ClearControls(); Add(pistenaytto); - await LisaaPanos(); // Odotetaan, kunnes panos on asetettu + await LisaaPanos(false); // Odotetaan, kunnes panos on asetettu panosAsetettu.TrySetResult(true); AlustusSlots(); @@ -2110,7 +2323,7 @@ public class Financial_Freedom : PhysicsGame Level.Background.Image = taustakuvaCF; Level.Background.Width = Screen.Width; Level.Background.Height = Screen.Height; - await LisaaPanos(); // Odotetaan, kunnes panos on asetettu + await LisaaPanos(true); // Odotetaan, kunnes panos on asetettu panosAsetettu.TrySetResult(true); // Varmistetaan, että odotus päättyy TakaisinPV(); ClearControls(); @@ -2385,28 +2598,7 @@ public class Financial_Freedom : PhysicsGame } - /// <summary> - /// luo suorakulmion annettun kokoon ja paikkaan - /// </summary> - /// <param name="peli"></param> - /// <param name="width">logon leveys</param> - /// <param name="height">logon korkeus</param> - /// <param name="x">logon paikka</param> - /// <param name="y">logon paikka</param> - public void MiniPeliLogo(Game peli, double width, double height, double x, double y, string kuva, int order) - { - PhysicsObject p = new PhysicsObject(width, height, Shape.Rectangle, x, y); - p.Image = LoadImage(kuva); - Label iconLab = new Label(kuva+$" ({order})") - { - - Color = Color.White, - Position = new Vector(x, y-90), // Asetetaan sijainti - }; - peli.Add(p); - peli.Add(iconLab); - - } + async Task Voitto() { Console.WriteLine(finalscore); diff --git a/Financial_Freedom/Financial_Freedom/Financial_Freedom.csproj b/Financial_Freedom/Financial_Freedom/Financial_Freedom.csproj index b9e7be8adf1c53893e675cb366f10402dd08dd69..2c9c5e3957c5f0a026afca4503afb7b3e0cd85ba 100644 --- a/Financial_Freedom/Financial_Freedom/Financial_Freedom.csproj +++ b/Financial_Freedom/Financial_Freedom/Financial_Freedom.csproj @@ -338,6 +338,12 @@ <None Update="Content\rulettipöytä.png"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Update="Content\tyhjatausta.png"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Update="Content\slotBG.png"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> </ItemGroup> <ItemGroup>