python - 简单的 Tic-Tac_Toe 游戏 Pygame

标签 python pygame python-3.4

我正在 pygame 中编写一个简单的井字棋游戏,但找不到我需要的答案。我希望当鼠标在某个坐标平面内单击时出现“X”。我现在的代码只会在按住鼠标按钮时显示 X。谢谢

import pygame
import sys

red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
darkBlue = (0,0,128)
white = (255,255,255)
black = (0,0,0)
pink = (255,200,200)

#iconChoice = input("Would you like to be X's or O's?(X/O)?:")

iconChoice = "X"

# initialize game engine
pygame.init()
pygame.font.init()
font = pygame.font.SysFont("Century Schoolbook",12)
# set screen width/height and caption
size = [500,500]
screen = pygame.display.set_mode(size)
pygame.display.set_caption('My Game')
# initialize clock. used later in the loop.
clock = pygame.time.Clock()

# Loop until the user clicks close button
done = False
while done == False:
    # write event handlers here
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
    # write game logic here

    sys_font = pygame.font.SysFont("None",60)
    rendered = sys_font.render(iconChoice, 0, black)
    mousexpos, mouseypos = pygame.mouse.get_pos()
    pygame.event.get()

    '''                
    elif pygame.mouse.get_pressed()[0] == True and mousexpos > 166 and mousexpos < 322 and  mouseypos < 156:
        print("2")

    elif pygame.mouse.get_pressed()[0] == True and mousexpos > 332 and  mouseypos < 156:
        print("3")
        done = True

    elif pygame.mouse.get_pressed()[0] == True and mousexpos < 156 and  mouseypos > 166 and mouseypos < 322:
        print("4")
        done= True

    elif pygame.mouse.get_pressed()[0] == True and mousexpos > 166 and mousexpos < 322 and  mouseypos > 166 and mouseypos < 322:
        print("5")
        done= True

    elif pygame.mouse.get_pressed()[0] == True and mousexpos > 332 and  mouseypos > 166 and mouseypos < 322:
        print("6")
        done = True

    elif pygame.mouse.get_pressed()[0] == True and mousexpos < 156 and  mouseypos > 332:
        print("7")
        done= True

    elif pygame.mouse.get_pressed()[0] == True and mousexpos > 166 and mousexpos < 322 and  mouseypos > 332:
        print("8")
        done= True

    elif pygame.mouse.get_pressed()[0] == True and mousexpos > 332 and  mouseypos > 332:
        print("9")
        done = True

    '''

    # clear the screen before drawing
    screen.fill((255, 255, 255))


    # draw
    pygame.draw.rect(screen, black, (10,156,480,15), 0)
    pygame.draw.rect(screen, black, (10,322,480,15), 0)
    pygame.draw.rect(screen, black, (156,10,15,480), 0)
    pygame.draw.rect(screen, black, (322,10,15,480), 0)
    pygame.display.flip()

    if pygame.mouse.get_pressed()[0] == True and mousexpos < 156 and mouseypos < 156:
        print("1")
        screen.blit(rendered, (20,15))
        pygame.display.update(10,10,166,166)


    # display what’s drawn. this might change.
    pygame.display.update()

    # run at 20 fps
    clock.tick(20)

# close the window and quit    
pygame.quit()

最佳答案

这是您需要的: 鼠标位置:

mouse_pos = mouse.get_pos()

还有一个矩形:

rect1 = Rect(top_left_corner_x, top_left_corner_y, width, height)

然后检查鼠标是否在此矩形中单击:

if event.type == MOUSEBUTTONDOWN and rect1.collidepoint(mouse_pos):
    #draw X

您可以将其放在事件循环中或外部(但最好在内部)。

关于python - 简单的 Tic-Tac_Toe 游戏 Pygame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27389355/

相关文章:

tkinter 显示信息 python 3

python - 在 catplot 中指定颜色

python - 在 python 中使用 argparse 将 csv 转换为 xml

python - 基于列表填充数据框列

python - Pygame 窗口未在 macOS Catalina 上显示

python - 如何让键绑定(bind)在 pygame 中工作?

python-3.x - pygame 没有可用的音频设备

python - SQLAlchemy/Python 3(默认列值)

python - asyncio 超时终止子进程

python - Pandas ;通过划分大型数据帧的最后一列来创建新列