Skip to content
Snippets Groups Projects
Commit e28e94d1 authored by Lehtinen Samuli Saul Abiel's avatar Lehtinen Samuli Saul Abiel
Browse files

MVP-versio pelistä.

parent e4c02941
No related branches found
No related tags found
No related merge requests found
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/contentModel.xml
/.idea.suunnitelma.iml
/projectSettingsUpdater.xml
/modules.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings" defaultProject="true" />
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>
\ No newline at end of file
......@@ -4,21 +4,232 @@ using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Widgets;
using System.Drawing;
namespace haluatko_miljonaariksi;
/// @author ssale
/// @version 17.02.2025
/// <summary>
///
/// Haluatko Miljonaariksi - arvausvisassa arvaillaan oikeaa vastausta vaihtoehtojen a-d väliltä. Päästäkseen miljoonaan, käyttäjän on arvattava 14 kertaa oikein.
/// </summary>
public class haluatko_miljonaariksi : PhysicsGame
{
private static Random random = new Random();
private static string fifty = "50:50";
private static char[] vaihtoehdot = { 'A', 'B', 'C', 'D' };
private int[] voitot =
{ 100, 200, 300, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 250000, 500000, 1000000 };
private int[] palkintorakenne =
{ 100, 200, 300, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 250000, 500000, 1000000 };
private int taso = 0;
private int viimeinenTakuusumma = 0;
private int vihjeidenMaara = 3;
private char oikeaVastaus;
private Label kysymysTeksti;
private Label[] vastausPainikkeet = new Label[4];
private Label infoTeksti;
private Label palkinto;
private Label oljenKorsi;
//private Label uudestaanTeksti;
public override void Begin()
{
// Kirjoita ohjelmakoodisi tähän
Level.Background.Color = Color.DarkBlue;
LuoPeliUI();
EsitaKysymys();
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
}
public void LuoPeliUI()
{
GameObject ulkorengas = new GameObject(350, 350, Shape.Circle);
ulkorengas.Y = 200;
ulkorengas.Color = Color.Yellow;
Add(ulkorengas);
GameObject sisarengas = new GameObject(320, 320, Shape.Circle);
sisarengas.Y = 200;
sisarengas.Color = Color.DarkBlue;
Add(sisarengas);
Label palkinto = new Label
{
Text = "Palkintorakenne",
TextColor = Color.Yellow,
Position = new Vector(-360, 325),
Font = Font.DefaultBold
};
Add(palkinto);
Label otsikkoTeksti = new Label
{
Text = "Haluatko miljonaariksi",
TextColor = Color.White,
Font = Font.DefaultBold,
Position = new Vector(0, 200)
};
Add(otsikkoTeksti);
kysymysTeksti = new Label
{
Text = "",
TextColor = Color.White,
Font = Font.DefaultBold,
Position = new Vector(0, 200)
};
kysymysTeksti.Font.Size = 70;
Add(kysymysTeksti);
infoTeksti = new Label
{
Text = "Onko oikea vastaus A, B, C vai D?",
TextColor = Color.Yellow,
Font = Font.DefaultBold,
Position = new Vector(0, -20)
};
infoTeksti.Font.Size = 35;
Add(infoTeksti);
for (int i = 0; i < 4; i++)
{
// Luodaan tausta vastauspainikkeelle
GameObject tausta = new GameObject(100, 50);
tausta.Position = new Vector(-220 + i * 150, -100);
tausta.Color = Color.SkyBlue;
tausta.Tag = vaihtoehdot[i].ToString();
Add(tausta);
vastausPainikkeet[i] = new Label($"{vaihtoehdot[i]}) ")
{
TextColor = Color.Black,
Font = Font.DefaultBold,
Position = tausta.Position
};
Add(vastausPainikkeet[i]);
int index = i;
Keyboard.Listen((Key)(Key.A + i), ButtonState.Pressed, () => TarkistaVastaus(vaihtoehdot[index]),
"Vastaus");
}
GameObject fiftyTausta = new GameObject(100, 50);
fiftyTausta.Position = new Vector(0, -200);
fiftyTausta.Color = Color.SkyBlue;
fiftyTausta.Tag = fifty;
Add(fiftyTausta);
Label vihjePainike = new Label("50:50")
{
TextColor = Color.Black,
Font = Font.DefaultBold,
Position = fiftyTausta.Position,
Size = new Vector(80, 40)
};
Add(vihjePainike);
Keyboard.Listen(Key.Space, ButtonState.Pressed, KaytaVihje, "Käytä oljenkorsi");
}
private void TarkistaVastaus(char valinta)
{
if (valinta == oikeaVastaus)
{
taso++;
infoTeksti.Text = $"Oikein! Voitit {voitot[taso - 1]} taikarahaa.";
if (voitot[taso - 1] == 1000 || voitot[taso - 1] == 50000)
{
viimeinenTakuusumma = voitot[taso - 1];
infoTeksti.Text += $"\nTakuusummasi on nyt {viimeinenTakuusumma} €.";
}
Timer.SingleShot(2.0, EsitaKysymys);
}
else
{
infoTeksti.Text = $"Väärin! Peli päättyi. Saat {viimeinenTakuusumma} taikarahaa.";
foreach (var btn in vastausPainikkeet) btn.IsVisible = false;
Timer.SingleShot(0.75, KysyUudestaan);
}
}
private void EsitaKysymys()
{
if (taso >= voitot.Length)
{
infoTeksti.Text = "Onneksi olkoon! Voitit MILJOONA taikarahaa!";
return;
}
oikeaVastaus = vaihtoehdot[random.Next(vaihtoehdot.Length)];
kysymysTeksti.Text =
$"Kysymys {taso + 1}. Palkinto: {voitot[taso]} taikarahaa.\n Onko oikea vastaus A, B, C vai D?";
infoTeksti.Text = "Oljenkorsia jäljellä: " + vihjeidenMaara;
kysymysTeksti.Position = new Vector(50, -25);
infoTeksti.Position = new Vector(0, -155);
//Add(infoTeksti);
//Add(kysymysTeksti);
for (int i = 0; i < 4; i++)
{
vastausPainikkeet[i].Text = $"{vaihtoehdot[i]})";
vastausPainikkeet[i].Color = Color.White;
vastausPainikkeet[i].IsVisible = true;
}
}
private void KaytaVihje()
{
if (vihjeidenMaara <= 0)
{
infoTeksti.Text = "Ei enää vihjeitä jäljellä!";
return;
}
vihjeidenMaara--;
infoTeksti.Text = $"50:50 vihje käytetty. Jäljellä {vihjeidenMaara}.";
char[] väärätVaihtoehdot = vaihtoehdot
.Where(v => v != oikeaVastaus) // Poistetaan oikea vastaus valikoimasta
.OrderBy(x => random.Next()) // Sekoitetaan
.Take(2) // Otetaan kaksi väärää vaihtoehtoa
.ToArray();
// Piilotetaan nämä kaksi väärää vastausta
foreach (var btn in vastausPainikkeet)
{
if (väärätVaihtoehdot.Contains(btn.Text[0]))
btn.IsVisible = false;
}
}
private void KysyUudestaan()
{
Label uudestaanTeksti = new Label("Haluatko yrittää uudestaan? (Y/N)")
{
TextColor = Color.White,
Font = Font.DefaultBold,
Position = new Vector(0, -300)
};
Add(uudestaanTeksti);
Keyboard.Listen(Key.Y, ButtonState.Pressed, ResetoiPeli, "Käynnistä peli uudelleen");
Keyboard.Listen(Key.N, ButtonState.Pressed, Exit, "Lopeta peli");
}
private void ResetoiPeli()
{
// Nollataan pelin tilat
taso = 0;
viimeinenTakuusumma = 0;
vihjeidenMaara = 3;
ClearAll();
Begin();
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment