これは私が抱えている非常に特殊な問題です。このコード (以下) はエラーを発生させませんが、プレーヤーまたはコンピューターによる動きの更新と表示は行いません。
問題は何ですか?? 私は本当に混乱しています。
また、このコードで定義されていないすべての関数は、TicTacToe およびWork!からインポートされます。
ゲームのロジック機能に問題はありません。問題は、表示 (pygame) コードにあります。
入力は現在コンソールからです
from TicTacToe import * # The game logic functions
import pygame
from pygame.locals import *
#-------------The problem may be here---------------#
def printb(board,surface,image):
surface.blit(image,(0,0))
for x in range(3):
for y in range(3):
disp(board[x+(y*3)],(58*x,58*y+13),surface) # any inputs on a better way to do this??
#-------------The problem may be here---------------#
def disp(phrase,loc,screen):
s = font.render(phrase, True, (0,0,0))
screen.blit(s, loc)
if __name__ == '__main__':
# Pygame
pygame.init()
pygame.font.init()
screen = pygame.display.set_mode((200,250))
screen.fill((0,255,0))
img = pygame.image.load('Board.png')
img = img.convert_alpha()
font = pygame.font.SysFont("Courier",11)
#----------The problem may even be here---------------#
# Game
board = [' ']*9
playing = True
while True:
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
printb(board,screen,img)
pmove = playermove(board) # player move
makemove(board,pmove,'O')
if checkwinner(board,'O'):
winner = 'P'
break
else:
if boardfull(board):
break
cmove = compmove(board) # comp move
makemove(board,cmove,'X')
if checkwinner(board,'X'):
winner = 'C'
break
pygame.display.flip()
printb(board,screen,img)
if winner == 'P':
print 'You'
elif winner == 'C':
print 'I'
else:
print'Draw'
if playagain():
board = [' ']*9
print '\n\n'
else:
break
実行の 1 つ (IDLE 時) で、プレイヤーは' O '
、コンピューターは' X '
>>>
Enter Your Move: 1
Enter Your Move: 2
Enter Your Move: 3
Not free space!!
Enter Your Move: 4
I Win !!
Play Again? -> n
>>> board
['O', 'O', 'X', 'O', ' ', 'X', ' ', ' ', 'X']
>>> winner
'C'
これがpygameウィンドウです。常に同じままです。