用pygame写的类似打地鼠的小游戏

最近刚开始学python,为了提高兴趣就先摸了pygame。
这个小游戏是这样:
1、窗口内会随机产生一个不断膨胀的方块。
2、一旦方块膨胀到碰到窗口边缘,游戏就结束了。
3、在方块膨胀的阶段可以用鼠标点击方块把他消除掉。
4、消除掉方块后会立刻刷新一个新的方块出来。

代码如下

import pygame
import sys
import random

FPS=20 # 游戏帧率
WINWIDTH = 600  # 窗口宽度
WINHEIGHT = 600  # 窗口高度

clock=pygame.time.Clock()								#用于控制循环刷新频率的对象
screen=pygame.display.set_mode((WINWIDTH,WINHEIGHT))	#创建窗口

class fangkuai(pygame.sprite.Sprite):
	#初始化方块,包含5个参数,坐标、宽高、颜色
	def __init__(self,x,y,width,height,color):
		self.x = x
		self.y = y
		self.width = width
		self.height = height
		self.color = color

	#方块变大,只要没碰到窗口边缘就会一直膨胀
	def growbig(self):
		#print(self.x,self.y)
		global WINWIDTH,WINHEIGHT
		if self.x > 0 and self.y > 0 and self.x+self.width < WINWIDTH and self.y+self.height < WINHEIGHT:	#判断方块的边缘是否触碰到窗口边缘
			self.width += 2		#宽度+2
			self.x -= 1			#左上坐标-1,这样方块才是以方块中心为中心膨胀
			self.height += 2	#同上
			self.y -= 1
		else:						#如果碰触到窗口边缘
			self.color = (255,0,0)	#变色
			print('游戏结束')		#打印游戏结束
			global GAMEOVER			#全局变量GAMEOVER
			GAMEOVER = True			#激活游戏的结束条件
			pygame.time.wait(1000)	#程序等待1000ms

	#显示方块
	def displayfangkuai(self):
		pygame.draw.rect(screen, self.color, (self.x, self.y, self.width, self.height))		#直接绘制方块

def main():
	global WINWIDTH,WINHEIGHT

	#1 创建控制游戏结束的状态
	GAMEOVER = False

	pygame.init()				# pygame初始化,必须有,且必须在开头

	fx = random.randint(100,WINWIDTH-100)		#随机x坐标
	fy = random.randint(100,WINHEIGHT-100)		#随机y坐标
	color1 = (random.randint(0,255),random.randint(0,255),random.randint(0,255))			#随机颜色

	fangkuai1 = fangkuai(fx,fy,1,1,color1)	#初始化一个方块

	while not GAMEOVER:
		clock.tick(FPS) # 控制循环刷新频率,每秒刷新FPS对应的值的次数

		for event in pygame.event.get():
			if event.type == pygame.QUIT:
			# 判断当前事件是否为点击右上角退出键
				pygame.quit()
				sys.exit() # 需要提前 import sys
			elif event.type == pygame.MOUSEBUTTONDOWN:
				#print('按下鼠标按键')
				#print(event.pos)
				mouse_x, mouse_y = event.pos
				#print(mouse_x,mouse_y)
				#print(a_leftup_x,a_leftup_y,a_rightdown_x,a_rightdown_y)
				if mouse_x > a_leftup_x and mouse_x < a_rightdown_x and mouse_y > a_leftup_y and mouse_y < a_rightdown_y:
					fangkuai1.x, fangkuai1.y = random.randint(100,WINWIDTH-100), random.randint(100,WINHEIGHT-100)
					fangkuai1.width, fangkuai1.height = 1, 1
					fangkuai1.color = (random.randint(0,255),random.randint(0,255),random.randint(0,255))
		
		screen.fill((255,255,255))
		fangkuai1.growbig()
		fangkuai1.displayfangkuai()

		#计算获得方块的左上角坐标和右下角坐标
		a_leftup_x = fangkuai1.x
		a_leftup_y = fangkuai1.y
		a_rightdown_x = fangkuai1.x + fangkuai1.width
		a_rightdown_y = fangkuai1.y + fangkuai1.height
		
		pygame.display.update()

if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值