Python快速实现简易贪吃蛇小游戏的示例代码

10-21 174阅读 0评论

贪吃蛇?=(也叫做贪食蛇)游戏是一款休闲益智游戏,有PC和手机等多平台版本。既简单又耐玩。该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长。

贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。

另外还有一种名为“贪吃蛇”钻井测井技术,是运用旋转导向系统、随钻测井系统等的油气田定向钻井、随钻测井技术,可完成海上“丛式井”和复杂油气层的开采需求,大幅降低油气田开发综合成本。

依然是基于Pygame,pip install pygame安装即可

完整代码如下:

# 导入from tkinter import mainloop import pygame import time import random import sys     # 显示评分功能 def show_score(choice, color, font, size): 	 	# 创建字体对象 score_font 	score_font = pygame.font.SysFont(font, size) 	 	# 创建显示表面对象 core_surface 	score_surface = score_font.render('Score : ' + str(score), True, color) 	 	# 为文本表面对象创建一个矩形对象 	score_rect = score_surface.Get_rect() 	 	# 显示文字 	game_window.blit(score_surface, score_rect)   # 游戏结束功能 def game_over(): 	 	# 创建字体对象 my_font 	my_font = pygame.font.SysFont('times new roman', 50) 	 	# 创建将在其上绘制文本的文本表面 	game_over_surface = my_font.render('Your Score is : ' + str(score), True, red) 	 	# 为文本表面对象创建一个矩形对象 	game_over_rect = game_over_surface.get_rect() 	 	# 设置文本位置 	game_over_rect.mIDtop = (window_x/2, window_y/4) 	 	# blit 将在屏幕上绘制文本 	game_window.blit(game_over_surface, game_over_rect) 	pygame.DIsplay.flip() 	 	# 2 秒后我们将退出程序 	time.sleep(1)   	for event in pygame.event.get(): 		if event.type == pygame.QUIT: 			pygame.quit() 			sys.exit() 		if event.type == pygame.MOuseBUTTONDOWN: 			pygame.quit() 			sys.exit() 	# 停用 pygame 库 	#pygame.quit() 	 	# 退出程序 	#quit()   if __name__ == '__main__': 	snake_speed = 10   	# 窗口大小 	window_x = 720 	window_y = 480   	# 定义颜色 	black = pygame.Color(0, 0, 0) 	white = pygame.Color(255, 255, 255) 	red = pygame.Color(255, 0, 0) 	green = pygame.Color(0, 255, 0) 	blue = pygame.Color(0, 0, 255)   	# 初始化pygame 	pygame.init()   	# 初始化游戏窗口 	pygame.display.set_captiON('贪吃蛇小游戏') 	game_window = pygame.display.set_mode((window_x, window_y))  	# FPS(每秒帧数)控制器 	fps = pygame.time.Clock()   	# 定义蛇默认位置 	snake_position = [100, 50]   	# 定义蛇体的前 4 个块 	snake_body = [ [100, 50], 					[90, 50], 					[80, 50], 					[70, 50] 				] 	# 水果位置 	fruit_position = [ranDOM.randrange(1, (window_x//10)) * 10, 					random.randrange(1, (window_y//10)) * 10] 	fruit_spawn = True   	# 设置默认的蛇方向向右 	direction = 'RIGHT' 	change_to = direction   	# 初始分数 	score = 0    	# Main Function 	while True: 		# 处理关键事件 		for event in pygame.event.get(): 			if event.type == pygame.KEYDOWN: 				if event.key == pygame.K_UP: 					change_to = 'UP' 				if event.key == pygame.K_DOWN: 					change_to = 'DOWN' 				if event.key == pygame.K_LEFT: 					change_to = 'LEFT' 				if event.key == pygame.K_RIGHT: 					change_to = 'RIGHT'   		# 如果同时按下两个键 			# 我们不想让蛇同时向两个方向移动 		if change_to == 'UP' and direction != 'DOWN': 			direction = 'UP' 		if change_to == 'DOWN' and direction != 'UP': 			direction = 'DOWN' 		if change_to == 'LEFT' and direction != 'RIGHT': 			direction = 'LEFT' 		if change_to == 'RIGHT' and direction != 'LEFT': 			direction = 'RIGHT'   		# 移动蛇 		if direction == 'UP': 			snake_position[1] -= 10 		if direction == 'DOWN': 			snake_position[1] += 10 		if direction == 'LEFT': 			snake_position[0] -= 10 		if direction == 'RIGHT': 			snake_position[0] += 10   		# 蛇体生长机制 			# 如果水果和蛇发生碰撞,那么分数将增加 10 		snake_body.insert(0, list(snake_position)) 		if snake_position[0] == fruit_position[0] and snake_position[1] == fruit_position[1]: 			score += 10 			fruit_spawn = False 		else: 			snake_body.pop() 		if score>=50: 			snake_speed=15 		if score>=60: 			snake_speed=20 		if score>=70: 			snake_speed=30   			 		if not fruit_spawn: 			fruit_position = [random.randrange(1, (window_x//10)) * 10, 							random.randrange(1, (window_y//10)) * 10] 			 		fruit_spawn = True 		game_window.fill(black) 		 		for pos in snake_body: 			pygame.draw.rect(game_window, green, pygame.Rect( 			pos[0], pos[1], 10, 10)) 			 		pygame.draw.rect(game_window, white, pygame.Rect( 		fruit_position[0], fruit_position[1], 10, 10))   		# 游戏结束条件 		if snake_position[0] < 0 or snake_position[0] > window_x-10: 			game_over() 		if snake_position[1] < 0 or snake_position[1] > window_y-10: 			game_over() 		 		# 触碰蛇身 		for block in snake_body[1:]: 			if snake_position[0] == block[0] and snake_position[1] == block[1]: 				game_over() 		 		# 连续显示分数 		show_score(1, white, 'times new roman', 20) 		 		# 刷新游戏画面 		pygame.display.update()   		# 每秒帧数/刷新率 		fps.tick(snake_speed)

对原代码结构进行了进一步规范化,且原运行结果是死亡之后等待两秒结束游戏自动退出游戏窗 ,改为游戏结束之后,手动点击屏幕或者右上角X键退出游戏;并增加了移动变速,初始速度为10,当积分达到50则速度为15,积分60速度20,积分70速度30,积分80速度40,飞一般的感觉

运行效果如下,操作方式方向键上下左右即可:

Python快速实现简易贪吃蛇小游戏的示例代码

Python快速实现简易贪吃蛇小游戏的示例代码

Python快速实现简易贪吃蛇小游戏的示例代码

以上就是Python快速实现简易贪吃蛇小游戏的示例代码的详细内容,更多关于python贪吃蛇游戏的资料请关注云初冀北其它相关文章!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,174人围观)

还没有评论,来说两句吧...