Föreläsning 2 ”STYRSTRUKTURER OCH SELEKTION”

STYRSTRUKTURER OCH SELEKTION
ME1453 – Introduktion till Spelteknik

STYRSTRUKTURER
Används för att styra flödet i en applikation.

–Selektion–    –Iteration–
if…        while
else…        do…
switch…        while
case…        for

SELEKTIONER
–Symmetriskt val–                –Osymmetriskt val–
Satser 1        Satser 2            Satser 1            -
if (villkor){                    if (villkor){
Sats 1;                        Sats 1;
}                        }
else{
Sats 2;
}

Villkor = logiskt uttryck

y = abs(x); // absolutbeloppet utav x
if (x < 0)
y = -x;
else
y = x;

y = min(a,b); // minsta utav a och b
if (a < b)
y = a;
else
y = b;

SATSPARANTESER
Flera satser som hör ihop hålls samman utav satsparanteser, brackets (”{ }”)

if (villkor){
Sats 1;
……
Sats n;
}
else
{
Sats 1;
….
}

SUCCESSIVA VAL


Visa spelmeny

Spelaren valde        Spelaren valde
att avsluta spelet        inställningar

Visa inställningsmenyn

Spelaren valde        Spelaren valde
grafikinställningar        tillbaka

FLERVALSMÖJLIGHETER

Dice
1    2    3    4    5    6

Random rand = new Random();
int result = rand.Next(1,6);
switch (result)                <—– Testexpression
{
case 1:
System.Console.WriteLine(”Throw resulted in a die with the number one!”);
break;

case 2:
System.Console.WriteLine(”Throw resulted in a die with the number two!”);
break;

……..

case 6:
System.Console.WriteLine(”Throw resulted in a die with the number six!”);
break;
}
Alla case-satser är från en Expression-lista

LOGISKA VARIABLER, OPERATORER OCH UTTRYCK
Relationsoperatorer jämför variabler och ger ett booleskt (logiskt) värde som resultat
–    < mindre än
–    <= mindre än, lika med
–    > större än
–    >= större än, lika med
–    == lika med
–    != olika med, inte lika med

== Om

= Är

&& Och

|| eller

; slut på rad

LOGISKA VARIABLER, OPERATORER OCH UTTRYCK
Logisak operatorer används för att kombinera logiska uttryck (värden)

if (poor && hungry){
money = 10000;

if ((x+y > z) && (y+z>x) && (x+z > y)){
s = (x+y+z)/2;
area = sqrt(s * (s-x) * (s-y) * (s-z));    sqrt = square root?
}
if ((a < 5 || b > 10) && c > 0)
d = 10000;

ITERATIONER
Något ska göras ett bestämt antal gånger eller tills ett villkor blir uppfyllt

Stämmer villkoret? —-> Utför sats —-> Upprepa —-> Stämmer villkoren? —-> etc

ITERATIONER, BESTÄMDA


Antal iterationer är känt från början
–    for ( [expression1]; [testexpression]; [expression 2])
statement;

Används ofta till tabeller och ”arrayer”

Exempel, skriv ut 0 -> 20
–    for (int i = 0; i < 20; i = i + 1)
System.Console.WriteLine(”This is the ” + i + ” loop”);

Exempel, summera alla talen mellan 0 och 20
–    int sum = 0;
for (int i = 0; i < 20; i = i + i)
sum = sum + i;

System.Console.WriteLine(”The sum of the numbers 0 to 20: ” + sum);

EXEMPEL, SKRIV UT EN MULTIPLIKATIONSTABELL
static void Main(String[] args)
{
int i, number, product;            (kan skriva fler variabler på samma när man bestämmer dem)
System.Console.WriteLine(”Which table=”);
number = int.Parse(System.Console.ReadLine());
for (i = 1; i < 12; i++) {
product = number * i;
System.Console.WriteLine(product);
}
}

ITERATIONER, OBESTÄMDA
Antal iterationer är okänt från början

Förtestad repetition
–    Villkoret testas före satsen körs
–    while (villkor){
……
}

Eftertestad repetition
–    Villkoret testas efter satsen körs
–    do {
……
}
while (villkor);

Förtestad repetiotion
while (logiskt uttryck)
sats;

while (logiskt uttryck) {
sats 1;
…..
sats n;

Eftertestad repetition
do
sats;
while (logiskt uttryck);

do
sats 1;
…..
sats n;
while (logiskt uttryck){
……
}

———–
sum = 0; N = 1;
while (sum < 100){
sum = sum + 1.0/N;
N = N +1;
}

bool gameover = false;
while (gameover == false){
UpdateGame();
gameover = playerLives < 1;
}

choice = -1;
do {
System.Console.WriteLine(”1. Settings”);
System.Console.WriteLine(”0. Exit”);
System.Console.WriteLine(”Make your choice: ”);
choice = int.Parse(System.Console.ReadLine());
}
while (choice != 0);

ITERATIONER, BESÄMDA
Bestämda iterationer går även att utföra med while. Antal iterationer som ska göras är känt från början.

for int i = 0; i < 5; i = i + 1){
sats(er);
}

är samma sak som

int i = 0;

while (i < 5){
sats(er);
i = i + 1;
}

VILLKORSPOERATORN ?:
Uttryck 1 ? uttryck 2 : uttryck 3
Int c = a > b ? a : b;    —-> Se nedan
Int tal = 5 < 3 ? 12 : 9001;
backgroundColor = isItPlayerOne ? Color.Blue : Color.Green;

 

backgrundColor= isItPlayerOne?Color.Blue:Color.Green;          : blir då istället

——
int c;
if (a > b)
c = a;
else
c = b;
——