Ödev olarak yaptığım bir 2048 oyunu kodunda “game” fonksiyonuna geldiğimde input alamıyorum. Bundan ayrı olarak da “sayı_ekleme” fonksiyonunda zaten sayı olan bir yeri seçenekleri arasından çıkartmayı başaramadım. Bu ikisini veya en azından birisini düzeltebilirseniz sevinirim. Ayrıca son olarak da sadece “a” tuşuna basınca enter’e vasmaya gerek kalmadan beni algılayabileceği şekilde birşey yaparsanız da güzel olur (msvcrt ve getkey’i denedim ama ikisini de pip kullanarak indiremiyorum ve VS code kullanarak çalıştırınca hata veriyolar.).
import numpy as np
import random as rd
def random_1():
i=rd.choice([0,1,2,3])
return i
def random_2():
j=rd.choice([0,1,2,3])
return j
def random_3():
y=rd.choice([2,2,2,2,2,2,2,2,2,4])
return y
def sayı_ekleme(board,dolu_kutu,tekrar):
i= random_1()
j= random_2()
y= random_3()
dolu_kutu = []
for a in range(4):
for b in range(4):
if board[a][b] != 0:
dolu_kutu.append([a,b])
if (i,j) in dolu_kutu:
tekrar = True
return board,dolu_kutu,tekrar
else:
board[i][j] = y
dolu_kutu.append([i,j])
return board, dolu_kutu
def sola_kaydır(board,dolu_kutu,tekrar):
for i in range(4):
for j in range(4):
satır = []
if board[i][j] != 0:
satır.append(board[i][j])
for x in range(4-len(satır)):
satır.append("0")
for x in range(4):
satır[x] = board[i][j]
return board
def sola_birleştir(board,dolu_kutu,tekrar):
for i in range(4):
for j in range(4):
satır = []
for x in range(4):
satır.append(board[i][j])
for x in range(3):
if satır[x] == satır[x+1]:
satır[x] *= 2
satır[x+1] = 0
for x in range(4):
board[i][j] = satır[x]
return board
def sol(board,dolu_kutu,tekrar):
sola_kaydır(board,dolu_kutu,tekrar)
sola_birleştir(board,dolu_kutu,tekrar)
sola_kaydır(board,dolu_kutu,tekrar)
sayı_ekleme(board,dolu_kutu,tekrar)
return board,dolu_kutu,tekrar
def game(board,dolu_kutu,tekrar):
while True:
hareket = input()
if hareket == "a":
sol(board,dolu_kutu,tekrar)
print(board)
def start():
board = np.array([[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]])
dolu_kutu = []
tekrar = False
for i in range(2):
sayı_ekleme(board,dolu_kutu, tekrar)
while tekrar == True:
sayı_ekleme(board,dolu_kutu,tekrar)
print(board)
game(board,dolu_kutu,tekrar)
start()