python上的tic-tac-toe程序在弹出黑屏时出现某种错误,程序没有响应

2024-04-18 06:05:09 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,所以我正试图建立一个pvp x o程序,但每次我启动程序一个黑色的pygame屏幕出现,程序无法运行,请任何人解释是哪里的问题,我应该如何弥补?你知道吗

import os
import pygame
from pygame.locals import*

pygame.init()

ev = pygame.event.get()
x=0
y=0


window=pygame.display.set_mode((700,700))
background=pygame.image.load('blanc.png')
grille=pygame.image.load('Tic-tac-toe.png')

window.blit(background,(0,0))
window.blit(grille,(50,50))

x=pygame.image.load("X-400.png")

o=pygame.image.load("o.png")

GRID=[0,0,0,0,0,0,0,0,0]
tour=1

a=tour/2



while tour<10:
 for event in ev:
  while jouer==true:
   if a==int(a):
    if event.type == MOUSEBUTTON and event.button==3:
     pygame.mouse.get_pos(x,y)
     if x<189:

        if y<192:
            window.blit(o,(50,50))
            GRID[1]=2
        elif 275<y<382:
            window.blit(o,(50,275))
            GRID[4]=2
        elif y>468:
            window.blit(o,(50,468))
            GRID[7]=2
    elif 275<x<377:
         if  y<192:
            window.blit(o,(275,50))
            GRID[2]=2
         elif 275<y<382:
            window.blit(o,(275,275))
            GRID[5]=2
         elif y>468:
            window.blit(o,(275,468))
            GRID[8]=2
    elif x>461:
         if  y<192:
           window.blit(o,(461,50))
           GRID[3]=2
         elif 275<y<382:
            window.blit(o,(461,275))
            GRID[6]=2
         elif y>468:
            window.blit(o,(461,468))
            GRID[9]=2
    tour=tour+1
   elif a!=int(a):
    if event.type== MOUSEBUTONDOWN and event.button== 1:
     pygame.mouse.get_pos(x,y)
     if x<189:

        if y<192 and GRID[1]==0:
            window.blit(X-400,(50,50))
            GRID[1]=1
        elif 275<y<382:
            window.blit(X-400,(50,275))
            GRID[4]=1
        elif y>468:
            window.blit(X-400,(50,468))
            GRID[7]=1
     elif 275<x<377:
         if  y<192:
            window.blit(X-400,(275,50))
            GRID[2]=1
         elif 275<y<382:
            window.blit(X-400,(275,275))
            GRID[5]=1
         elif y>468:
            window.blit(X-400,(275,468))
            GRID[8]=1
     elif x>461:
         if  y<192:
           window.blit(X-400,(461,50))
           GRID[3]=1
         elif 275<y<382:
            window.blit(X-400,(461,275))
            GRID[6]=1
         elif y>468:
            window.blit(X-400,(461,468))
            GRID[9]=1
   tour=tour+1

pygame.display.flip()

Tags: andimageimport程序eventgetifpng
3条回答

现在我只是不明白怎么会有图像,当我点击

import os
    import pygame
    from pygame.locals import*

    pygame.init()

    ev = pygame.event.get()




window=pygame.display.set_mode((700,700))
background=pygame.image.load('blanc.png')
grille=pygame.image.load('Tic-tac-toe.png')

window.blit(background,(0,0))
window.blit(grille,(50,50))

XX=pygame.image.load("X-400.png")

o=pygame.image.load("o.png")

GRID=[0,0,0,0,0,0,0,0,0]
tour=1

a=tour/2



while tour<10:
 for event in pygame.event.get():
   if a==int(a):
    if event.type == MOUSEBUTTONDOWN and event.button==3:
     pygame.mouse.get_pos(x,y)
     if x<189:

        if y<192:
            window.blit(o,(50,50))
            GRID[1]=2
        elif 275<y<382:
            window.blit(o,(50,275))
            GRID[4]=2
        elif y>468:
            window.blit(o,(50,468))
            GRID[7]=2
    elif 275<x<377:
         if  y<192:
            window.blit(o,(275,50))
            GRID[2]=2
        elif 275<y<382:
            window.blit(o,(275,275))
            GRID[5]=2
        elif y>468:
            window.blit(o,(275,468))
            GRID[8]=2
    elif x>461:
         if  y<192:
           window.blit(o,(461,50))
           GRID[3]=2
         elif 275<y<382:
            window.blit(o,(461,275))
            GRID[6]=2
         elif y>468:
            window.blit(o,(461,468))
            GRID[9]=2
    pygame.display.flip()
    tour=tour+1
   elif a!=int(a):
    if event.type== MOUSEBUTONDOWN and event.button== 1:
     pygame.mouse.get_pos(x,y)
     if x<189:

         if y<192 and GRID[1]==0:
            window.blit(XX,(50,50))
            GRID[1]=1
        elif 275<y<382:
            window.blit(XX,(50,275))
            GRID[4]=1
        elif y>468:
            window.blit(XX,(50,468))
            GRID[7]=1
     elif 275<x<377:
         if  y<192:
            window.blit(XX,(275,50))
            GRID[2]=1
         elif 275<y<382:
            window.blit(XX,(275,275))
            GRID[5]=1
         elif y>468:
            window.blit(XX,(275,468))
            GRID[8]=1
     elif x>461:
         if  y<192:
           window.blit(XX,(461,50))
           GRID[3]=1
         elif 275<y<382:
            window.blit(XX,(461,275))
            GRID[6]=1
         elif y>468:
            window.blit(XX,(461,468))
            GRID[9]=1
   pygame.display.flip()
   tour=tour+1


fps=15

这不是一个完整的答案,但只是迈向一个工作游戏的下一步。我引入了一个player变量,对于第一个或第二个播放器可以是0或1。然后在事件循环中,我将当前的image设置为XXif player == 0:,否则设置为o。在循环结束时(如果按下鼠标键),我增加player,然后使用模2 %= 2,使它在0和1之间循环。如你所见,它仍然不能正常工作,但这是一个进步。;)

import sys
import pygame
from pygame.locals import *


pygame.init()

window = pygame.display.set_mode((700,700))
window.fill((30, 40, 50))

XX = pygame.Surface((90, 90), pygame.SRCALPHA)
pygame.draw.line(XX, (60, 100, 200), (0, 0), (90, 90), 3)
pygame.draw.line(XX, (60, 100, 200), (90, 0), (0, 90), 3)

o = pygame.Surface((90, 90), pygame.SRCALPHA)
pygame.draw.circle(o, (90, 200, 50), (45, 45), 45, 3)

GRID = [0,0,0,0,0,0,0,0,0]

player = 0
clock = pygame.time.Clock()
jouer = True

while jouer:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            jouer = False
        if event.type == MOUSEBUTTONDOWN:
            if player == 0:
                image = XX
            else:
                image = o
            x, y = pygame.mouse.get_pos()
            if x<189:
                if y<192:
                    window.blit(image,(50,50))
                    GRID[1] = 2
                elif 275<y<382:
                    window.blit(image,(50,275))
                    GRID[4] = 2
                elif y>468:
                    window.blit(image,(50,468))
                    GRID[7] = 2
            elif 275<x<377:
                if y<192:
                    window.blit(image,(275,50))
                    GRID[2] = 2
                elif 275<y<382: 
                    window.blit(image,(275,275))
                    GRID[5] = 2
                elif y>468:
                    window.blit(image,(275,468))
                    GRID[8] = 2
            elif x>461:
                 if  y<192:
                   window.blit(image,(461,50))
                   GRID[3] = 2
                 elif 275<y<382:
                    window.blit(image,(461,275))
                    GRID[6] = 2
                 elif y>468:
                    window.blit(image,(461,468))
                    GRID[9] = 2
            player += 1
            player %= 2

    pygame.display.flip()
    clock.tick(30)

pygame.quit()
sys.exit()
import sys
import pygame
from pygame.locals import *


pygame.init()

window = pygame.display.set_mode((700,700))
window.fill((25, 25, 25))
grille=pygame.image.load('Tic-tac-toe.png')
window.blit(grille,(50,50))
XX = pygame.Surface((150, 150), pygame.SRCALPHA)
pygame.draw.line(XX, (255, 255, 255), (0, 0), (150,150), 5)
pygame.draw.line(XX, (255, 255, 255), (150, 0), (0, 150), 5)

o = pygame.Surface((150, 150), pygame.SRCALPHA)
pygame.draw.circle(o, (255, 255 , 0), (75, 75), 75, 5)
def pvploop():
    GRID = [0,0,0,0,0,0,0,0,0]
    gagner =True
    player = 0
    clock = pygame.time.Clock()
    jouer = True
    value=1
    while jouer and not gagner:
        gameDisplay.fill(25,25,25)
        message_to_screen("Game over, press C to play again or Q to quit",)
        pygame.display.update()
        for event in pygame.event.get():
         if event.type==pygame.QUIT:
            jouer = False
         if event.type == pygame.KEYDOWN:
                 if event.key == pygame.K_q:
                  jouer = False
                 if event.key == pygame.K_c:
                   pvploop()   




    while jouer and gagner:
     for event in pygame.event.get():
           if event.type == pygame.QUIT:
               jouer = False
           elif GRID[0]==2 and GRID[1]==2 and GRID[2]==2:
               print('O a gagne')
               gagner =False

           elif GRID[3]==2 and GRID[4]==2 and GRID[5]==2:
              print('O a gagne')
           elif GRID[6]==2 and GRID[7]==2 and GRID[8]==2:
              print('O a gagne')
           elif GRID[0]==2 and GRID[3]==2 and GRID[6]==2:
             print('O a gagne')
           elif GRID[1]==2 and GRID[4]==2 and GRID[7]==2:
             print('O a gagne')
           elif GRID[2]==2 and GRID[5]==2 and GRID[8]==2:
             print('O a gagne')
           elif GRID[0]==2 and GRID[4]==2 and GRID[8]==2:
                 print('O a gagne')
           elif GRID[2]==2 and GRID[4]==2 and GRID[6]==2:
                print('O a gagne')
           elif GRID[0]==2 and GRID[3]==2 and GRID[6]==2:
                     print('O a gagne')



           elif GRID[0]==1 and GRID[1]==1 and GRID[2]==1:
                    print (' X a gagne')
           elif GRID[3]==1 and GRID[4]==1 and GRID[0]==1:
                    print (' X a gagne')
           elif GRID[6]==1 and GRID[7]==1 and GRID[8]==1:
                    print (' X a gagne')
           elif GRID[0]==1 and GRID[1]==1 and GRID[2]==1:
                    print (' X a gagne')
           elif GRID[3]==1 and GRID[4]==1 and GRID[5]==1:
                    print (' X a gagne')
           elif GRID[6]==1 and GRID[7]==1 and GRID[8]==1:
                    print (' X a gagne')
           elif GRID[0]==1 and GRID[3]==1 and GRID[6]==1:
                    print (' X a gagne')
           elif GRID[1]==1 and GRID[4]==1 and GRID[7]==1:
                    print (' X a gagne')
           elif GRID[2]==1 and GRID[5]==1 and GRID[8]==1:
                    print (' X a gagne')
           elif GRID[3]==1 and GRID[6]==1 and GRID[0]==1:
                    print (' X a gagne')
           elif GRID[4]==1 and GRID[7]==1 and GRID[1]==1:
                    print (' X a gagne')
           elif GRID[5]==1 and GRID[8]==1 and GRID[2]==1:
                    print (' X a gagne')
           elif GRID[0]==1 and GRID[4]==1 and GRID[8]==1:
                    print (' X a gagne')
           elif GRID[2]==1 and GRID[4]==1 and GRID[6]==1:
                    print (' X a gagne')
           elif GRID[4]==1 and GRID[8]==1 and GRID[0]==1:
                    print (' X a gagne')
           elif GRID[4]==1 and GRID[6]==1 and GRID[2]==1:
                    print (' X a gagne')

           elif GRID[0]==1 and GRID[8]==1 and GRID[4]==1:
                   print (' X a gagne')

           elif GRID[2]==1 and GRID[6]==1 and GRID[4]==1:
                   print (' X a gagne')

            elif GRID[0]==1 and GRID[1]==1 and GRID[2]==1:
                     print (' X a gagne')

           elif GRID[3]==1 and GRID[4]==1 and GRID[5]==1:
                    print (' X a gagne')

           elif GRID[6]==1 and GRID[7]==1 and GRID[8]==1:
                    print (' X a gagne')

           elif GRID[0]==1 and GRID[3]==1 and GRID[6]==1:
                    print (' X a gagne')

           elif GRID[1]==1 and GRID[4]==1 and GRID[7]==1:
                    print (' X a gagne')

           elif GRID[2]==1 and GRID[5]==1 and GRID[8]==1:
                    print (' X a gagne')




           elif event.type == MOUSEBUTTONDOWN:
               if player == 0:
                   image = XX
               else:
                   image = o
               x, y = pygame.mouse.get_pos()
                   if x<232:
                   if y<234 and GRID[0] == 0 :
                       window.blit(image,(75,75))
                       player += 1
                       GRID[0] = value
                   elif 234<y<425 and GRID[3]==0:
                       window.blit(image,(75,275))
                       player += 1
                       GRID[3] = value
                   elif y>425 and GRID[6] == 0 :
                       window.blit(image,(75,468))
                       player += 1
                       GRID[6] = value
               elif 232<x<419:
                   if y<234 and GRID[1] == 0 :
                       window.blit(image,(275,75))
                       player += 1
                       GRID[1] = value
                   elif 234<y<425 and GRID[4] == 0 :
                       window.blit(image,(275,275))
                       player += 1
                       GRID[4] = value
                   elif y>425 and GRID[7] == 0 :
                       window.blit(image,(275,468))
                       player += 1
                       GRID[7] = value
               elif x>419:
                    if  y<234 and GRID[2] == 0 :
                      window.blit(image,(465,75))
                      player += 1
                      GRID[2] = value
                    elif 234<y<425 and GRID[5]==0:
                       window.blit(image,(465,275))
                       player += 1
                       GRID[5] = value
                    elif y>425 and GRID[8] == 0 :
                       window.blit(image,(465,468))
                       player += 1
                       GRID[8] = value
               player %= 2
               value=player+1
               print GRID
     pygame.display.flip()
     clock.tick(30)

    pygame.quit()
    sys.exit()

相关问题 更多 >