Python贪吃蛇小游戏_完整源码免费分享
文章目录
- Python 贪吃蛇小游戏
- 1. 导包
- 2. 配置初始化参数
- 3. 主函数及运行主体
- 4. 画食物的函数
- 5. 画贪吃蛇的函数
- 6. 画网格的函数(非必选,觉得多余的可以忽略此项)
- 7. 操纵贪吃蛇移动的函数
- 8. 判断蛇是否死亡的函数
- 9.判断蛇是否吃到食物的函数
- 10. 随机生成食物
- 11. 游戏开始与结束的相关配置
- 12. 函数俱备,只欠main这个东风了
- 13.图片和字体资源
- 14. 更多干货分享(免费)
今天给大家免费分享一下Python飞机游戏的源码。
Python 贪吃蛇小游戏
(声明:本文使用的源码非原创,17年在CSDN上用币下载的资源,具体是哪位大佬的忘记了)
在此之前首先说一下环境
Python3.X (使用2.x的大佬自己稍微改动一下就行)
pygame 1.9.6(当然这个没必要和我一样)
1. 导包
## 导入相关模块
import random
import pygame
import sysfrom pygame.locals import *
2. 配置初始化参数
snake_speed = 15 #贪吃蛇的速度
windows_width = 800
windows_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 = 1
DOWN = 2
LEFT = 3
RIGHT = 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 = LEFTelif (event.key == K_RIGHT or event.key == K_d) and direction != LEFT:direction = RIGHTelif (event.key == K_UP or event.key == K_w) and direction != DOWN:direction = UPelif (event.key == K_DOWN or event.key == K_s) and direction != UP:direction = DOWNelif 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_sizey = food['y'] * cell_sizeappleRect = 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_sizey = coord['y'] * cell_sizewormSegmentRect = 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 水平 linespygame.draw.line(screen, dark_gray, (x, 0), (x, windows_height))for y in range(0, windows_height, cell_size): # draw 垂直 linespygame.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 = Trueif 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 loopif 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 loopif 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()
13.图片和字体资源
这里放不了静态资源,需要的朋友可以扫码进入公众号【大数据编程】后台回复【snake】即可获取。
14. 更多干货分享(免费)
Python飞机大战小游戏_完整源码免费分享
(求职/考研)精选简历模板!拿走不谢!
笔试必备!Java、Python、Scala 基础算法动图详解(值得收藏)
一键免费下载全套《阿里巴巴 Java 开发手册》
Gof23种设计模式趣味详解(三分钟上手系列)
Python贪吃蛇小游戏_完整源码免费分享相关推荐
- 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)
简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...
- C语言小游戏大全,C语言贪吃蛇小游戏(附源码)
一.C语言小游戏大全,C语言贪吃蛇小游戏(附源码) 贪吃蛇小游戏源码和更多C语言课设项目小游戏源码免 费 下 载 链 接 如下: c语言项目课设小游戏源码资料压缩包.zip-C文档类资源-CSDN下载 ...
- c语言小游戏 精简_一个简易的贪吃蛇小游戏C语言源码
/* *程序名称:贪吃蛇v2.1 *程序描述:一个简易的贪吃蛇小游戏 *版本信息:v2.1 *v1.1版本更新:1:加入菜单选择项 *v1.2版本更新:1:修复菜单选择bug *v1.3班本更新:1: ...
- 前端技术搭建贪吃蛇小游戏(内含源码)
The sand accumulates to form a pagoda ✨ 写在前面 ✨ 功能介绍 ✨ 页面搭建 ✨ 样式设置 ✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了井字游戏,今 ...
- 【QT】实现贪吃蛇小游戏(附源码)
- 10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...
贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...
- python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏
Python编写贪吃蛇 前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前.看来大家对这类简单易上手小游戏还是很喜爱的. 恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉, ...
- python贪吃蛇小游戏_python开发贪吃蛇小游戏
3.概要设计 3.1 程序功能模块 由设计应解决的问题可知,本次的设计是使用用方向键来实现一个简易的贪吃蛇小游戏的程序,具体的功能模块如图3-1所示. 图3-1 程序功能模块 Fig.3-1 prog ...
- python贪吃蛇小游戏制作思路详解
很多时候,游戏都是一种可以发泄自己内心情绪的工具,在游戏中,我们可以忘记经历过的很多不快.如今呢,随着软硬件的不断提高,游戏市场越来越繁华红火,很多游戏都动辄好几个G.让人不得不感叹啊,以前那种玩贪吃 ...
最新文章
- Struts2拦截器的使用
- 网络推广方法带你了解优质的网站结构对网站SEO有什么好处?
- C#连接oracle的方式以及问题解决.
- 如何使用定时器settimeout、setInterval执行能传递参数的函数(转)
- 转载--【笔记】Asp.Net构架(Http请求处理流程)
- Caused by: java.lang.NoClassDefFoundError: org/apache/commons/pool/BasePoolableObjectFactory
- Angular提示文件不是一个有效的模块
- d3js path generator vs layouts
- 16g电脑内存有什么好处_电脑内存容量都是16GB, 买单根16G好还是双根8G好呢?
- RSS文件的基本格式
- java银行叫号课程设计_《银行排队叫号系统设计》课程设计.doc
- iPhone四个步骤高效安装WAPI证书
- Python爬虫 - 01.实现贴吧一键签到
- python课本图片_python爬虫当当网python书籍图片
- python调用virustota接口api实现上传文件返回查毒结果
- Unity 3D——打包复用资源(.unitypackage文件)
- python单词表首字母排序_python 字母排序不区分大小写
- 关于Qt中QMAKESPEC环境变量
- 《东周列国志》第四回 秦文公郊天应梦 郑庄公掘地见母
- CPU 是怎么认识代码的?