Java programozás feladat?
int[] gameState = {2,2,2,2,2,2,2,2,2};
int[][] winningPositions = {
{0,1,2}, {3,4,5}, {6,7,8},
{0,3,6}, {1,4,7}, {2,5,8},
{0,4,8}, {2,4,6}
};
for (int[] winningPosition:winningPositions){
if (gameState[winningPosition[0]] == gameState[winningPosition[1]] &&
gameState[winningPosition[1]] == gameState[winningPosition[2]]&&
gameState[winningPosition[0]] != 2){}
}
a kérdés a kiválasztási folyamat lenne. Mit takar a gamestate[winningPosition[0]] ?
milyen számokat hasonlít össze és mivel?
Csak nem egy 3x3-as amőba játék? :)
0-1-2 az első sor
0-3-6 az első oszlop
0-4-8 és 2-4-6 a két átló.
Be lehet vezetni további változókat, hogy tisztább legyen, hogy mi micsoda:
//winningPosition tömb az egy sorban lévő 3 cella indexét tárolja
for (int[] winningPosition:winningPositions){
int firstPosition = winningPosition[0];
int secondPosition = winningPosition[1];
int thirdPosition = winningPosition[2];
int value1 = gameState[firstPosition];
int value2 = gameState[secondPosition];
int value2 = gameState[thirdPosition];
if (value1 == value2 && value2 == value3 && value1 != 2){
//A három érték ugyanaz a sorban és nem az előre beállított üres érték (2), akkor valaki nyert
}
}
winningPositions helyett lehetne hívni a változót rows-nak például.
Azt kellene megérteni, hogy mit jelent ez a kifejezés és akkor a többi már egyértelmű lesz utána:
gameState[winningPosition[0]]
1.) gameState: Ez egy integereket tartalmazó tömb, amit az első sorban hoztál létre.
Na most, ha hivatkozni akarsz ennek a tömbnek egy elemére, akkor így tudnád megtenni:
gameState[3] (2. elemet adja vissza, ami "2"). - Ez a kis megjegyzés a későbbiekben még fontos lesz!
2.) winningPosition ("s" nélkül a végén): Ez egy integereket tartalmazó tömb, amit a for() ciklusban hozol létre és a winningPositions ("s"-el a végén) 2-dimenziós tömb aktuális sorát tartalmazza mindig, ahogy megy a ciklus.
Tehát a ciklus 0. körében: {0,1,2}
1. körében: {3,4,5}
2. körében: {6,7,8}
[...]
Ha hivatkozni akarsz az egyik elemére, akkor nyilván így tudnád megtenni:
winningPosition[0]
3.) Akkor most rakjuk össze:
gameState[winningPosition[0]]
* Vesszük a gameState változót, annak is valahányadik elemét.
* Hányadik elemét? -> winningPosition[0] -> A winningPosition tömb 0. eleme által visszaadott értéket.
Tehát egész konkrétan a ciklus 1-3. körében ez a kifejezés behelyettesítések után így néz ki:
ciklus 1. körében: gameState[0] (="2")
ciklus 2. körében: gameState[3] (="2")
ciklus 3. körében: gameState[6] (="2")
"Na most, ha hivatkozni akarsz ennek a tömbnek egy elemére, akkor így tudnád megtenni:
gameState[3] (2. elemet adja vissza, ami "2")."
Asszem itt elgépeltél valamit.
A gameState[3] nem a 3. elemet adja vissza?
Vagy a 4. et ha 1 től kezded a tömböt sorszámozni (nem tudom ki az az állat aki az egytől való sorszámozást kitalálta...).
int[] gameState = {0,1,2,3,4,5,6,6,7};
System.out.println(gameState[3]); // 3
int[] gameState = {1,2,3,4,5,6,6,7,9};
System.out.println(gameState[3]); // 4
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!