Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
ohj1ht
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
sasaable
ohj1ht
Commits
ca5d4949
Commit
ca5d4949
authored
2 weeks ago
by
Lehtinen Samuli Saul Abiel
Browse files
Options
Downloads
Patches
Plain Diff
Lisätty värikoodit jos vastaus oikein tai väärin.
parent
60c5e60e
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
suunnitelma/ht/haluatko_miljonaariksi/Ohjelma.cs
+1
-1
1 addition, 1 deletion
suunnitelma/ht/haluatko_miljonaariksi/Ohjelma.cs
suunnitelma/ht/haluatko_miljonaariksi/haluatko_miljonaariksi.cs
+70
-52
70 additions, 52 deletions
...telma/ht/haluatko_miljonaariksi/haluatko_miljonaariksi.cs
with
71 additions
and
53 deletions
suunnitelma/ht/haluatko_miljonaariksi/Ohjelma.cs
+
1
−
1
View file @
ca5d4949
...
...
@@ -19,7 +19,7 @@ namespace haluatko_miljonaariksi
[
STAThread
]
static
void
Main
()
{
using
var
game
=
new
haluatko
_m
iljonaariksi
();
using
var
game
=
new
haluatko
M
iljonaariksi
();
game
.
Run
();
}
}
...
...
This diff is collapsed.
Click to expand it.
suunnitelma/ht/haluatko_miljonaariksi/haluatko_miljonaariksi.cs
+
70
−
52
View file @
ca5d4949
...
...
@@ -16,22 +16,23 @@ namespace haluatko_miljonaariksi;
/// 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_
m
iljonaariksi
:
PhysicsGame
public
class
haluatko_
M
iljonaariksi
:
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
taso
=
0
;
private
int
viimeinenTakuusumma
=
0
;
private
int
taso
;
private
int
viimeinenTakuusumma
;
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 palkinto;
//
private Label oljenKorsi;
private
GameObject
korostusRuutu
;
//private Label fiftyOhje;
//private Label uudestaanTeksti;
...
...
@@ -45,9 +46,10 @@ public class haluatko_miljonaariksi : PhysicsGame
Keyboard
.
Listen
(
Key
.
Escape
,
ButtonState
.
Pressed
,
ConfirmExit
,
"Lopeta peli"
);
}
// Luodaan pelin visuaalinen ilme
public
void
LuoPeliUI
()
{
// Haluatko miljonääriksi renkaat
GameObject
ulkorengas
=
new
GameObject
(
350
,
350
,
Shape
.
Circle
);
ulkorengas
.
Y
=
200
;
ulkorengas
.
Color
=
Color
.
Yellow
;
...
...
@@ -57,12 +59,12 @@ public class haluatko_miljonaariksi : PhysicsGame
sisarengas
.
Y
=
200
;
sisarengas
.
Color
=
Color
.
DarkBlue
;
Add
(
sisarengas
);
// Seuraa palkintorakenteen etenemistä
korostusRuutu
=
new
GameObject
(
100
,
20
);
// Luo laatikko
korostusRuutu
.
Color
=
Color
.
SkyBlue
;
// Väri erottuu taustasta
korostusRuutu
.
Position
=
new
Vector
(-
420
,
310
);
// Sijoitetaan ensimmäisen palkinnon kohdalle
Add
(
korostusRuutu
);
// Palkintorakenne vasemmalle ylös
Label
palkinto
=
new
Label
{
Text
=
"Palkintorakenne"
,
...
...
@@ -72,7 +74,15 @@ public class haluatko_miljonaariksi : PhysicsGame
};
palkinto
.
Font
.
Size
=
20
;
Add
(
palkinto
);
Label
fiftyOhje
=
new
Label
{
Text
=
"Käytä vihje välilyönnistä."
,
TextColor
=
Color
.
White
,
Position
=
new
Vector
(
0
,
-
350
),
};
Add
(
fiftyOhje
);
// Luodaan palkintorakenteen alle voittosummat
for
(
int
i
=
0
;
i
<
voitot
.
Length
;
i
++)
{
Label
voittoLabel
=
new
Label
...
...
@@ -85,7 +95,7 @@ public class haluatko_miljonaariksi : PhysicsGame
voittoLabel
.
Font
.
Size
=
20
;
Add
(
voittoLabel
);
}
// Otsikko
Label
otsikkoTeksti
=
new
Label
{
Text
=
"Haluatko miljonaariksi"
,
...
...
@@ -93,31 +103,28 @@ public class haluatko_miljonaariksi : PhysicsGame
Font
=
Font
.
DefaultBold
,
Position
=
new
Vector
(
0
,
200
)
};
otsikkoTeksti
.
Font
.
Size
=
60
;
otsikkoTeksti
.
Font
.
Size
=
35
;
Add
(
otsikkoTeksti
);
// Käytetään EsitaKysymys-aliohjelmassa kysymystekstinä
kysymysTeksti
=
new
Label
{
Text
=
""
,
TextColor
=
Color
.
White
,
Font
=
Font
.
DefaultBold
,
Position
=
new
Vector
(
0
,
200
)
Font
=
Font
.
DefaultBold
};
kysymysTeksti
.
Font
.
Size
=
35
;
Add
(
kysymysTeksti
);
// käytetään EsitaKysymys-aliohjelmassa oljenkortena
infoTeksti
=
new
Label
{
Text
=
"
Onko oikea vastaus A, B, C vai D?
"
,
Text
=
""
,
TextColor
=
Color
.
Yellow
,
Font
=
Font
.
DefaultBold
,
Position
=
new
Vector
(
0
,
-
20
)
Font
=
Font
.
DefaultBold
};
Add
(
infoTeksti
);
// Luodaan vastauspainikkeet
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
// Luodaan tausta vastauspainikkeelle
GameObject
tausta
=
new
GameObject
(
140
,
50
);
tausta
.
Position
=
new
Vector
(-
80
+
i
*
190
,
-
100
);
tausta
.
Color
=
Color
.
SkyBlue
;
...
...
@@ -134,11 +141,11 @@ public class haluatko_miljonaariksi : PhysicsGame
};
Add
(
vastausPainikkeet
[
i
]);
int
index
=
i
;
Keyboard
.
Listen
((
Key
)(
Key
.
A
+
i
),
ButtonState
.
Pressed
,
()
=>
TarkistaVastaus
(
vaihtoehdot
[
index
]),
Keyboard
.
Listen
((
Key
.
A
+
i
),
ButtonState
.
Pressed
,
()
=>
TarkistaVastaus
(
vaihtoehdot
[
index
]),
"Vastaus"
);
}
// 50:50 painike
GameObject
fiftyTausta
=
new
GameObject
(
100
,
50
);
fiftyTausta
.
Position
=
new
Vector
(
0
,
-
300
);
fiftyTausta
.
Color
=
Color
.
SkyBlue
;
...
...
@@ -154,33 +161,45 @@ public class haluatko_miljonaariksi : PhysicsGame
Add
(
vihjePainike
);
Keyboard
.
Listen
(
Key
.
Space
,
ButtonState
.
Pressed
,
KaytaVihje
,
"Käytä oljenkorsi"
);
}
// tarkistetaan vastaus
private
void
TarkistaVastaus
(
char
valinta
)
{
// Etsitään valittu painike
Label
valittuPainike
=
vastausPainikkeet
.
FirstOrDefault
(
p
=>
p
.
Text
[
0
]
==
valinta
);
if
(
vali
nta
==
oikeaVastaus
)
if
(
vali
ttuPainike
!=
null
)
{
taso
++;
infoTeksti
.
Text
=
$"Oikein! Voitit
{
voitot
[
taso
-
1
]}
taikarahaa."
;
if
(
voitot
[
taso
-
1
]
==
1000
||
voitot
[
taso
-
1
]
==
50000
)
valittuPainike
.
Color
=
Color
.
Yellow
;
// Muutetaan valitun painikkeen väri keltaiseksi
}
// Oikea vastaus ratkeaa pienen odotuksen jälkeen.
Timer
.
SingleShot
(
1.0
,
()
=>
{
if
(
valinta
==
oikeaVastaus
)
{
viimeinenTakuusumma
=
voitot
[
taso
-
1
];
infoTeksti
.
Text
+=
$"\nTakuusummasi on nyt
{
viimeinenTakuusumma
}
€."
;
valittuPainike
.
Color
=
Color
.
Green
;
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
}
€."
;
}
if
(
taso
<
voitot
.
Length
)
// Varmistetaan, että ei mennä yli listan rajan
{
korostusRuutu
.
Y
=
310
-
(
taso
*
20
);
// Siirretään ruutua seuraavan palkintosumman kohdalle
}
Timer
.
SingleShot
(
2.0
,
EsitaKysymys
);
}
if
(
taso
<
voitot
.
Length
)
// Varmistetaan, että ei mennä yli listan rajan
else
{
korostusRuutu
.
Y
=
310
-
(
taso
*
20
);
// Siirretään ruutua seuraavan palkintosumman kohdalle
valittuPainike
.
Color
=
Color
.
Red
;
infoTeksti
.
Text
=
$"Väärin! Peli päättyi. Saat
{
viimeinenTakuusumma
}
taikarahaa."
;
Timer
.
SingleShot
(
1.0
,
KysyUudestaan
);
}
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
()
...
...
@@ -200,7 +219,7 @@ public class haluatko_miljonaariksi : PhysicsGame
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
vastausPainikkeet
[
i
].
Text
=
$"
{
vaihtoehdot
[
i
]}
)"
;
vastausPainikkeet
[
i
].
Color
=
Color
.
Whit
e
;
vastausPainikkeet
[
i
].
Color
=
Color
.
SkyBlu
e
;
vastausPainikkeet
[
i
].
IsVisible
=
true
;
}
}
...
...
@@ -215,22 +234,21 @@ public class haluatko_miljonaariksi : PhysicsGame
vihjeidenMaara
--;
infoTeksti
.
Text
=
$"50:50 vihje käytetty. Jäljellä
{
vihjeidenMaara
}
."
;
char
[]
v
ää
r
ä
tVaihtoehdot
=
vaihtoehdo
t
.
Where
(
v
=>
v
!=
oikeaVastaus
)
// Poistetaan oikea vastaus valikoimasta
.
OrderBy
(
x
=>
random
.
Next
())
// Sekoitetaan
.
Take
(
2
)
// Otetaan kaksi väärää va
ihtoehto
a
.
To
Array
();
List
<
Label
>
vaaratPainikkeet
=
vastausPainikkee
t
.
Where
(
p
=>
p
.
IsVisible
&&
p
.
Text
[
0
]
!=
oikeaVastaus
)
// Vain näkyvät ja väärät vaihtoehdot
.
OrderBy
(
x
=>
random
.
Next
())
// Sekoitetaan
lista
.
Take
(
2
)
// Otetaan kaksi väärää va
staust
a
.
To
List
();
// Piilotetaan n
ämä kaksi väärää vastausta
foreach
(
var
btn
in
va
staus
Painikkeet
)
// Piilotetaan n
e
foreach
(
var
painike
in
va
arat
Painikkeet
)
{
if
(
v
ää
r
ä
tVaihtoehdot
.
Contains
(
btn
.
Text
[
0
]))
btn
.
IsVisible
=
false
;
painike
.
IsVisible
=
false
;
}
}
private
void
KysyUudestaan
()
{
{
Label
uudestaanTeksti
=
new
Label
(
"Haluatko yrittää uudestaan? (Y/N)"
)
{
TextColor
=
Color
.
White
,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment