import sys
import pygame
import threading
import random
#创建游戏类
class Game:
def __init__(self):
#pygame初始化
pygame.init()
#设置显示模式
self.screen = pygame.display.set_mode((800,600))
#设置窗口标题
pygame.display.set_caption('python game')
#图片列表
self.image = []
#图片大小列表
self.imagerect = []
#载入图片
self.vs = pygame.image.load('vs.png')
self.o = pygame.image.load('o.png')
self.p = pygame.image.load('p.png')
self.u = pygame.image.load('u.png')
self.start = pygame.image.load('start.png')
self.exit = pygame.image.load('exit.png')
self.title = pygame.image.load('title.png')
for i in range(3):
png = pygame.image.load(str(i)+'.png')
self.image.append(png)
#处理图片绘制区域
for i in range(3):
image = self.image[i]
rect = image.get_rect()
rect.left = 200*(i+1)+rect.left
rect.top = 400
self.imagerect.append(rect)
#绘制游戏初始界面
def Start(self):
#绘制游戏名称
self.screen.blit(self.title,(200,100,400,140))
#绘制开始按钮
self.screen.blit(self.start,(350,300,100,50))
#绘制退出按钮
self.screen.blit(self.exit,(350,400,100,50))
#刷新屏幕
pygame.display.flip()
start = 1
#进入消息循环
while start:
#处理消息
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN: #处理鼠标单击消息
if self.isStart() ==0 :
start = 0
elif self.isStart() == 1:
sys.exit()
else:
pass
else:
pass
self.run() #开始游戏
def run(self):
self.screen.fill((0,0,0))
for i in range(3):
self.screen.blit(self.image[i],self.imagerect[i])
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN: #处理鼠标单击消息
self.OnMouseButDown()
else:
pass
def isStart(self):
pos=pygame.mouse.get_pos()
if pos[0]>350 and pos[0]<450:
if pos[1]>300 and pos[1]<350:
return 0
elif pos[1]>400 and pos[1]<450:
return 1
else:
return 2
else:
return 2
def OnMouseButDown(self):
self.screen.blit(self.vs,(300,150,140,140))
pos = pygame.mouse.get_pos()
if pos[1]>400 and pos[1]<540:
if pos[0]>200 and pos[0]<340:
self.screen.blit(self.image[0],(150,150,140,140))
self.isWin(0)
elif pos[0]>400 and pos[0]<540:
self.screen.blit(self.image[1],(150,150,140,140))
self.isWin(1)
elif pos[0]>600 and pos[0]<740:
self.screen.blit(self.image[2],(150,150,140,140))
self.isWin(2)
else:
pass
def isWin(self,value):
num = random.randint(0, 2)
self.screen.blit(self.image[num],(450,150,590,240))
pygame.display.flip()
if num == value:
self.screen.blit(self.o,(220,10,140,70))
pygame.display.flip()
elif num<value:
if num==0:
if value ==2:
self.screen.blit(self.u,(220,10,140,70))
else:
self.screen.blit(self.p,(220,10,140,70))
pygame.display.flip()
else:
self.screen.blit(self.u,(220,10,140,70))
pygame.display.flip()
else:
if num==2:
if value ==1:
self.screen.blit(self.u,(220,10,140,70))
else:
self.screen.blit(self.p,(220,10,140,70))
pygame.display.flip()
else:
self.screen.blit(self.u,(220,10,140,70))
pygame.display.flip()
game = Game()
game.start()