前言

本游戏纯属搞笑,你可以把你朋友的照片设置成贪吃蛇的蛇头,你们看最终结果就知道啦

相关文件

大家可以关注小编的公众号:Python日志
里面会不定时的发布一下Python小知识和一些高校有的源码的
源码获取可以在公众号里面回复:搞笑贪吃蛇 一定不要回复贪吃蛇不然就不是这个源码啦
Python编程小知识教学,入门到精通视频+源码+课件+学习解答加群:773162165

开发环境

Python3.6
模块
Pygame
Config
random

效果展示

恶搞Python版本的贪吃蛇小游戏!笑不活了!!

代码实现

MemeGame类

class MemeGame:def __init__(self):pygame.init()self.config = Config()pygame.display.set_caption(self.config.game_title)self.screen = pygame.display.set_mode((self.config.screen_width,self.config.screen_height), pygame.FULLSCREEN)self.meme = Meme(self)self.food = Food(self)self.running = Truedef _listen_event(self):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()if event.type == pygame.KEYDOWN:if event.key == pygame.K_DOWN:if self.meme.direction != 'j':self.meme.direction = 'k'elif event.key == pygame.K_UP:if self.meme.direction != 'k':self.meme.direction = 'j'elif event.key == pygame.K_LEFT:if self.meme.direction != 'l':self.meme.direction = 'h'elif event.key == pygame.K_RIGHT:if self.meme.direction != 'h':self.meme.direction = 'l'elif event.key == pygame.K_SPACE:self.running = Truedef _update_screen(self):self.screen.fill(self.config.screen_bg_color)def run_game(self):while True:pygame.time.delay(100)self._listen_event()self._update_screen()if self.running:self.meme.blit_meme()self.food.blit_food()self.meme.move()self.meme.eat_food(self.food)self._show_score(self.meme.len)if self.meme.is_hit_the_self() or self.meme.is_hit_the_wall():# dieself.running = Falseif self.running == False:self.meme.reset()self._show_game_over()pygame.display.flip()def _show_score(self, score):score = score - 3text_color = (0, 0, 0)font = pygame.font.SysFont('pingfang', 50)score_text = font.render(f'你吃了{score}口热乎的', True, text_color)self.screen.blit(score_text, (20, 20))def _show_game_over(self):text_color = (0, 0, 0)font = pygame.font.SysFont('pingfang', 50)text = font.render('游戏结束,按空格键再来一把', True, text_color)text_rect = text.get_rect()text_rect.center = self.screen.get_rect().centerself.screen.blit(text, text_rect)def play_sound(self, sound_name):sound = pygame.mixer.Sound(f'sound/{sound_name}.mp3')pygame.mixer.Sound.play(sound)

Meme类

class Meme():def __init__(self, meme_game):self.screen = meme_game.screenself.config = meme_game.configself.game = meme_gameself.head = pygame.image.load(self.config.meme_head_image)self.head = pygame.transform.scale(self.head, self.config.meme_head_size)self.head_rect = self.head.get_rect()self.body_rect = pygame.Rect(0,0,self.config.meme_body_block_size,self.config.meme_body_block_size)self.len = 3self.body = [(100, 200), (130, 200), (160, 200)]self.head_rect.x = 160 + 15self.head_rect.y = 200 - 30self.direction = 'k' # jkhl ---> 下上左右def blit_meme(self):for item in self.body:self.body_rect.x = item[0]self.body_rect.y = item[1]pygame.draw.rect(self.screen, self.config.meme_body_color, self.body_rect)self.screen.blit(self.head, self.head_rect)def move(self):head = self.body[0]if self.direction == 'k':now_head = (head[0], head[1] + 30)self.body.insert(0, now_head)self.head_rect.x = now_head[0] - 15self.head_rect.y = now_head[1] + 15elif self.direction == 'j':now_head = (head[0], head[1] - 30)self.body.insert(0, now_head)self.head_rect.x = now_head[0] - 15self.head_rect.y = now_head[1] - 30 - 30elif self.direction == 'h':now_head = (head[0] - 30, head[1])self.body.insert(0, now_head)self.head_rect.x = now_head[0] - 30self.head_rect.y = now_head[1] -30elif self.direction == 'l':now_head = (head[0] + 30, head[1])self.body.insert(0, now_head)self.head_rect.x = now_head[0] + 15self.head_rect.y = now_head[1] - 30if self.len < len(self.body):self.body.pop()def eat_food(self, food):if self.head_rect.colliderect(food.food_rect):self.len += 1self.game.play_sound('zhenxiang')food.rand_food()def is_hit_the_self(self):return self.body[0] in self.body[1:]def is_hit_the_wall(self):if self.screen.get_rect().collidepoint((self.head_rect.x, self.head_rect.y)):return Falseelse:return Truedef reset(self):self.len = 3self.direction = 'k'self.body = [(100, 200), (130, 200), (160, 200)]

Food类

class Food:def __init__(self, meme_game):self.config = meme_game.configself.screen = meme_game.screenself.game = meme_gameself.food = pygame.image.load(self.config.food_image)self.food = pygame.transform.scale(self.food, self.config.food_size)self.food_rect = self.food.get_rect()self.food_rect.x = 585self.food_rect.y = 30def blit_food(self):self.screen.blit(self.food, self.food_rect)def rand_food(self):screen_rect = self.screen.get_rect()x_num = screen_rect.width // 30y_num = screen_rect.height // 30self.food_rect.x = random.randint(0, x_num-1) * 30self.food_rect.y = random.randint(0, y_num-1) * 30self.game.play_sound('chishi')

Config类

class Config:def __init__(self):self.game_title = '吃shi啦你'self.screen_width = 0self.screen_height = 0self.screen_bg_color = (255, 255, 255)# memeself.meme_head_size = (60, 60)self.meme_head_image = 'images/head.png'self.meme_body_block_size = 30self.meme_body_color = (0, 0, 0)# foodself.food_image = 'images/food.png'self.food_size = (30, 30)

总结

本游戏是一个纯属搞笑类型的游戏,大家可以学习一下,比较还是比较偏基础的一个Python案例,新手小白比较适合学习

大家可以关注小编的公众号:Python日志
源码获取可以在公众号里面回复:搞笑贪吃蛇 一定不要回复贪吃蛇不然就不是这个源码啦
Python编程小知识教学,入门到精通视频+源码+课件+学习解答加群:773162165

【Python游戏】一个可以恶搞朋友的贪吃蛇小游戏 | 附带源码相关推荐

  1. 【贪吃蛇小游戏】宝塔面板快速搭建贪吃蛇小游戏Web网站 - 无需云服务器

    文章目录 前言 视频教程 1. 环境安装 2. 安装cpolar内网穿透 3. 内网穿透 4. 固定http地址 5. 配置二级子域名 6. 创建一个测试页面 转载自远程内网穿透的文章:Linux使用 ...

  2. 【Python黑科技】tkinter库实战“贪吃蛇”小游戏(保姆级图文+实现代码)

    目录 实现效果 实现思路 实现代码 总结 欢迎关注 『Python黑科技』 系列,持续更新中 欢迎关注 『Python黑科技』 系列,持续更新中 实现效果 实现思路 初始状态的蛇的长 3个像素点,食物 ...

  3. 一个C语言编写的贪吃蛇小游戏(含美化)

    这好像是第一次发博客hhh,最近学完C语言后浑身精力澎湃总想做点什么东西 (结果差点被现实打的肿透了脸qwq ) 于是四处找项目,最终锁定贪吃蛇,曾经诺基亚上的小游戏给我的印象还是挺深的,最后在浏览其 ...

  4. java贪吃蛇_如何用Java还原童年回忆?在线教你完成贪吃蛇小游戏

    今天我就从零开始来完成这个小游戏,完成的方式也是一步一步的添加功能这样的方式来实现. 额,不好意思,放错了,重来 第一步完成的功能:写一个界面 大家见到的贪吃蛇小游戏,界面肯定是少不了的.因此,第一步 ...

  5. php开发h5游戏,H5的canvas实现贪吃蛇小游戏

    这次给大家带来H5的canvas实现贪吃蛇小游戏,H5的canvas实现贪吃蛇小游戏注意事项有哪些,下面就是实战案例,一起来看一下. 本文介绍了H5 canvas实现贪吃蛇小游戏,分享给大家,具体如下 ...

  6. Java实现贪吃蛇小游戏(附完整源码)

    今天我就从零开始来完成这个小游戏,完成的方式也是一步一步的添加功能这样的方式来实现. 第一步完成的功能:写一个界面 大家见到的贪吃蛇小游戏,界面肯定是少不了的.因此,第一步就是写一个小界面. 实现代码 ...

  7. 原生JavaScript抒写——贪吃蛇小游戏

    原生JavaScript抒写--贪吃蛇小游戏 文章目录 原生JavaScript抒写--贪吃蛇小游戏 前言 一.需求分析 二.效果展示 三.具体逻辑代码分析 1.首先创建一个html文件,然后我们利用 ...

  8. python小游戏编程实例-10分钟教你用Python写一个贪吃蛇小游戏,适合练手项目

    另外要注意:光理论是不够的.这里顺便总大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交 ...

  9. python编程小游戏-10分钟用Python编写一个贪吃蛇小游戏,简单

    贪吃蛇,大家应该都玩过.小编当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最 ...

  10. 10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

最新文章

  1. Oracle审计--AUD$占用空间较大处理方案
  2. THUWC 2018(游记)
  3. 批处理删除编译产生的多余文件
  4. shell脚本字符串截取的8种方法
  5. WebRtc音视频实时通信--基本术语
  6. dede 模板 php sql,dedecms模板中使用{dede:sql=””}实现分页功能详解
  7. MFC获取当前应用程序实例句柄的三种方法
  8. 深圳中电港 招聘FAE(FPGA Lattice)
  9. 泛微OA ecology 您查看的文档过大,请下载文档后查看
  10. 学习笔记———《最大类间方差法》
  11. 细胞周期预测 | 单细胞转录组(scRNA-seq)分析 03
  12. 这世界没有能够预测未来的魔法水晶球
  13. 分析公司盈利能力的方法
  14. 服务器开机系统进不去怎么办,开机就进BIOS进不去系统怎么处理
  15. python 比较好的社区
  16. 机器学习:导数与偏导数的区别.
  17. ubuntu 黑体_Ubuntu 黑体解决方案
  18. java项目中布隆过滤器和布谷鸟过滤器
  19. 2009年威客模式已经成熟
  20. gsm模块 java 录音_Arduino从Quectel M95 GSM模块读取AT命令

热门文章

  1. Windows开发之VC++仿QQ迷你首页(迷你资讯)
  2. C语言4位BCD码加法器,四位二进制8421BCD码加法器.doc
  3. 英语听力训练常采用的方法
  4. 开学季征文 | 一位开发实习生的真情流露
  5. 通过对TCPWindowSize的调整对网络流量的性能优化
  6. alert日志大量DISTRIB TRAN GDDB.6d36e46c.419.26.15318211问题
  7. 仿QQ音乐的歌词滚动
  8. AutoCAD.net: 如何实现裁剪功能--Trim
  9. 索尼录音笔怎么导出录音内容_搜狗AI走向产业改造:纵横捭阖术与录音笔的新声态...
  10. 高数 | 导数零点定理为什么导数可以不连续?