Python实现贪吃蛇小游戏源码分享
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"Python实现贪吃蛇小游戏源码分享"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!今
千家信息网最后更新 2025年12月02日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) #控制fps4. 画食物的函数
#将食物画出来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安全错误
数据库的锁怎样保障安全
u3d访问数据库
福鼎市爱草媒网络技术有限公司
举报服务器
财务管理数据库课程
网络安全对抗技巧
剑灵洪门崛起数据库
携程 软件开发
将电脑变成代理服务器
为什么杀毒软件开发商是奇元
工业领域网络安全保障方案
路尼亚战记哪个服务器可以玩
软件开发加班多
盐城企业app软件开发
数据库中查询每个学生的课数
switch数据库
软件开发创业很难
财务造假数据库
无锡计算机软件开发团队
数据库接口技术ado特点
软件开发司法鉴定
云数据库证书
软件开发资金筹措方式
小米平板数据库异常有什么情况
华为服务器电源功率
少年儿童网络安全的活动
公安宣传网络安全知识
国产数据库产品的特征和应用
发布问答数据库错误是什么原因
正牛酒店管理系统服务器
饥荒如何创建服务器