Python实现贪吃蛇小游戏源码分享
发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,本篇内容介绍了"Python实现贪吃蛇小游戏源码分享"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!今
千家信息网最后更新 2025年01月29日Python实现贪吃蛇小游戏源码分享
本篇内容介绍了"Python实现贪吃蛇小游戏源码分享"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
今天给大家免费分享一下Python飞机游戏的源码。
Python 贪吃蛇小游戏
(声明:本文使用的源码非原创,17年在CSDN上用币下载的资源,具体是哪位大佬的忘记了) 在此之前首先说一下环境 Python3.X (使用2.x的大佬自己稍微改动一下就行) pygame 1.9.6(当然这个没必要和我一样)
1. 导包
## 导入相关模块import randomimport pygameimport sysfrom pygame.locals import *
2. 配置初始化参数
snake_speed = 15 #贪吃蛇的速度windows_width = 800windows_height = 600 #游戏窗口的大小cell_size = 20 #贪吃蛇身体方块大小,注意身体大小必须能被窗口长宽整除''' #初始化区由于我们的贪吃蛇是有大小尺寸的, 因此地图的实际尺寸是相对于贪吃蛇的大小尺寸而言的'''map_width = int(windows_width / cell_size)map_height = int(windows_height / cell_size)# 颜色定义white = (255, 255, 255)black = (0, 0, 0)gray = (230, 230, 230)dark_gray = (40, 40, 40)DARKGreen = (0, 155, 0)Green = (0, 255, 0)Red = (255, 0, 0)blue = (0, 0, 255)dark_blue =(0,0, 139)BG_COLOR = black #游戏背景颜色# 定义方向UP = 1DOWN = 2LEFT = 3RIGHT = 4HEAD = 0 #贪吃蛇头部下标
3. 主函数及运行主体
#主函数def main(): pygame.init() # 模块初始化 snake_speed_clock = pygame.time.Clock() # 创建Pygame时钟对象 screen = pygame.display.set_mode((windows_width, windows_height)) # screen.fill(white) pygame.display.set_caption("Python 贪吃蛇小游戏") #设置标题 show_start_info(screen) #欢迎信息 while True: running_game(screen, snake_speed_clock) show_gameover_info(screen)#游戏运行主体def running_game(screen,snake_speed_clock): startx = random.randint(3, map_width - 8) #开始位置 starty = random.randint(3, map_height - 8) snake_coords = [{'x': startx, 'y': starty}, #初始贪吃蛇 {'x': startx - 1, 'y': starty}, {'x': startx - 2, 'y': starty}] direction = RIGHT # 开始时向右移动 food = get_random_location() #实物随机位置 while True: for event in pygame.event.get(): if event.type == QUIT: terminate() elif event.type == KEYDOWN: if (event.key == K_LEFT or event.key == K_a) and direction != RIGHT: direction = LEFT elif (event.key == K_RIGHT or event.key == K_d) and direction != LEFT: direction = RIGHT elif (event.key == K_UP or event.key == K_w) and direction != DOWN: direction = UP elif (event.key == K_DOWN or event.key == K_s) and direction != UP: direction = DOWN elif event.key == K_ESCAPE: terminate() move_snake(direction, snake_coords) #移动蛇 ret = snake_is_alive(snake_coords) if not ret: break #蛇跪了. 游戏结束 snake_is_eat_food(snake_coords, food) #判断蛇是否吃到食物 screen.fill(BG_COLOR) #draw_grid(screen) draw_snake(screen, snake_coords) draw_food(screen, food) draw_score(screen, len(snake_coords) - 3) pygame.display.update() snake_speed_clock.tick(snake_speed) #控制fps
4. 画食物的函数
#将食物画出来def draw_food(screen, food): x = food['x'] * cell_size y = food['y'] * cell_size appleRect = pygame.Rect(x, y, cell_size, cell_size) pygame.draw.rect(screen, Red, appleRect)
5. 画贪吃蛇的函数
#将贪吃蛇画出来def draw_snake(screen, snake_coords): for coord in snake_coords: x = coord['x'] * cell_size y = coord['y'] * cell_size wormSegmentRect = pygame.Rect(x, y, cell_size, cell_size) pygame.draw.rect(screen, dark_blue, wormSegmentRect) wormInnerSegmentRect = pygame.Rect( #蛇身子里面的第二层亮绿色 x + 4, y + 4, cell_size - 8, cell_size - 8) pygame.draw.rect(screen, blue, wormInnerSegmentRect)
6. 画网格的函数(非必选,觉得多余的可以忽略此项)
#画网格(可选)def draw_grid(screen): for x in range(0, windows_width, cell_size): # draw 水平 lines pygame.draw.line(screen, dark_gray, (x, 0), (x, windows_height)) for y in range(0, windows_height, cell_size): # draw 垂直 lines pygame.draw.line(screen, dark_gray, (0, y), (windows_width, y))
7. 操纵贪吃蛇移动的函数
#移动贪吃蛇def move_snake(direction, snake_coords): if direction == UP: newHead = {'x': snake_coords[HEAD]['x'], 'y': snake_coords[HEAD]['y'] - 1} elif direction == DOWN: newHead = {'x': snake_coords[HEAD]['x'], 'y': snake_coords[HEAD]['y'] + 1} elif direction == LEFT: newHead = {'x': snake_coords[HEAD]['x'] - 1, 'y': snake_coords[HEAD]['y']} elif direction == RIGHT: newHead = {'x': snake_coords[HEAD]['x'] + 1, 'y': snake_coords[HEAD]['y']} snake_coords.insert(0, newHead)
8. 判断蛇是否死亡的函数
#判断蛇死了没def snake_is_alive(snake_coords): tag = True if snake_coords[HEAD]['x'] == -1 or snake_coords[HEAD]['x'] == map_width or snake_coords[HEAD]['y'] == -1 or \ snake_coords[HEAD]['y'] == map_height: tag = False # 蛇碰壁啦 for snake_body in snake_coords[1:]: if snake_body['x'] == snake_coords[HEAD]['x'] and snake_body['y'] == snake_coords[HEAD]['y']: tag = False # 蛇碰到自己身体啦 return tag
9. 判断蛇是否吃到食物的函数
#判断贪吃蛇是否吃到食物def snake_is_eat_food(snake_coords, food): #如果是列表或字典,那么函数内修改参数内容,就会影响到函数体外的对象。 if snake_coords[HEAD]['x'] == food['x'] and snake_coords[HEAD]['y'] == food['y']: food['x'] = random.randint(0, map_width - 1) food['y'] = random.randint(0, map_height - 1) # 实物位置重新设置 else: del snake_coords[-1] # 如果没有吃到实物, 就向前移动, 那么尾部一格删掉
10. 随机生成食物
#食物随机生成def get_random_location(): return {'x': random.randint(0, map_width - 1), 'y': random.randint(0, map_height - 1)}
11. 游戏开始与结束的相关配置
#开始信息显示def show_start_info(screen): font = pygame.font.Font('myfont.ttf', 40) tip = font.render('按任意键开始游戏~~~', True, (65, 105, 225)) gamestart = pygame.image.load('gamestart.png') screen.blit(gamestart, (140, 30)) screen.blit(tip, (240, 550)) pygame.display.update() while True: #键盘监听事件 for event in pygame.event.get(): # event handling loop if event.type == QUIT: terminate() #终止程序 elif event.type == KEYDOWN: if (event.key == K_ESCAPE): #终止程序 terminate() #终止程序 else: return #结束此函数, 开始游戏#游戏结束信息显示def show_gameover_info(screen): font = pygame.font.Font('myfont.ttf', 40) tip = font.render('按Q或者ESC退出游戏, 按任意键重新开始游戏~', True, (65, 105, 225)) gamestart = pygame.image.load('gameover.png') screen.blit(gamestart, (60, 0)) screen.blit(tip, (80, 300)) pygame.display.update() while True: #键盘监听事件 for event in pygame.event.get(): # event handling loop if event.type == QUIT: terminate() #终止程序 elif event.type == KEYDOWN: if event.key == K_ESCAPE or event.key == K_q: #终止程序 terminate() #终止程序 else: return #结束此函数, 重新开始游戏#画成绩def draw_score(screen,score): font = pygame.font.Font('myfont.ttf', 30) scoreSurf = font.render('得分: %s' % score, True, Green) scoreRect = scoreSurf.get_rect() scoreRect.topleft = (windows_width - 120, 10) screen.blit(scoreSurf, scoreRect)#程序终止def terminate(): pygame.quit() sys.exit()
12. 函数俱备,只欠main这个东风了
main()
"Python实现贪吃蛇小游戏源码分享"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
函数
程序
食物
大小
移动
小游戏
源码
位置
信息
内容
实物
尺寸
身体
主体
事件
参数
实际
对象
更多
模块
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全工作责任制落实意见
数据库 字段加1
网络安全应用层安全风险分类
db2数据库 快照数据
信息网络技术员
我的世界1.8.4服务器
株洲网络安全系统哪家好
初中七年级网络安全手抄报
网络技术提取图片
企业网络安全架构与运维实战
电文服务器
数据库设计的基本要求例子
数据库与大数据的区别
cdn网络安全采访
学校网络安全周宣传方案
禄劝天气预报软件开发
南京网络安全管理局
计算机网络技术考察500字
六安服务器机箱机柜加工
软件开发w7安装什么版
乡镇医院网络安全应急预案
北京戴尔服务器维修维保哪家便宜
济南刚刚好网络技术公司
关于软件开发的搞笑段子
github数据库北极
深圳智慧门禁软件开发怎么收费
为什么上网突然显示服务器异常
网络安全 美剧
湖南造的服务器云主机
即时通讯软件开发文档