Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

C# programozás beadandó SOS

136
Négyzetes nim
A négyzetes nim (másnéven: táblás nim) egy kétszemélyes táblás játék, melyben kavicsok
vannak elhelyezve négyzet alakban egy NxN-es táblán. Kezdetben a tábla minden mezőjén van
egy-egy kavics.
Játékszabályok:
A játékosok felváltva vesznek el a táblán elhelyezett kövekből úgy, hogy egyszerre csak egy
oszlopból vagy egy sorból vehetnek el. Akármennyit, az egész sort vagy oszlopot is, de egy
követ is lehet. (Legalább 1 kavicsot viszont mindenképp el kell venni.) Ami különösen fontos,
hogy csakis egymás mellettieket vehetnek el. Tehát, ha az egyik fél elvette valamelyik sorból a
két középsőt, akkor a rákövetkező nem veheti el a maradék kettőt, csak az egyiket.
A játéknak akkor van vége, ha a tábláról elfogytak a kövek. A játékot az nyeri, aki az utolsó
kavicsot veszi el a tábláról.
Készíts konzolos négyzetes nim játékot, amiben két játékos egymás ellen játszhat!
Segítség: A felhasználói bevitelt a kavicsok elvételéhez implementálhatod úgy, hogy a soron
következő játékosnak két koordinátát kell megadnia: az elvenni kívánt „kavicsszakasz” kezdőés végpontjait. Ha csak egy kavicsot venne el, akkor ugyanazt a koordinátát adja meg kétszer.
Egy példa.: A soron következő játékos a 3. sorban lévő kavicsokat veszi el.
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Felsőoktatás / Informatika

Válaszok

1
Az alábbiakban egy példa implementációt találsz a négyzetes nim játékhoz Python nyelven. A játék két játékos között zajlik, és egymás után vesznek el kavicsokat a tábláról.

def display_board(board):
for row in board:
print(row)

def take_stones(board, start_row, end_row):
for i in range(start_row, end_row + 1):
board[i] = []

def is_game_over(board):
for row in board:
if len(row) > 0:
return False
return True

def play_game():
N = 4 # Tábla mérete
board = [[1] * N for _ in range(N)] # Kezdetben minden mezőn van 1 kavics

player1_turn = True
while not is_game_over(board):
display_board(board)

if player1_turn:
print("Játékos 1 következik!")
else:
print("Játékos 2 következik!")

start_row = int(input("Kérem adja meg az elvenni kívánt kavicsszakasz kezdőpontját (0-3): "))
end_row = int(input("Kérem adja meg az elvenni kívánt kavicsszakasz végpontját (0-3): "))

take_stones(board, start_row, end_row)

player1_turn = not player1_turn

if player1_turn:
print("Játékos 2 nyert!")
else:
print("Játékos 1 nyert!")

play_game()

Ez az implementáció egy 4x4-es táblával dolgozik, de a tábla méretét módosíthatod a N változó értékének megváltoztatásával. A játékosok egymás után adják meg a kiválasztott kavicsszakaszt, amit a program figyel, majd a megadott szakaszban lévő kavicsokat eltávolítja. A játék addig folytatódik, amíg az összes kavicsot el nem vették, majd a program közli, hogy melyik játékos nyert.
0