今天给大家带来几个Python小游戏,找回童年的同时学习编程!

一、接金币

普通难度:❤

玩法介绍:吃金币,控制左右键,有手就行。

源码分享

import os
import cfg
import sys
import pygame
import random
from modules import *'''游戏初始化'''
def initGame():# 初始化pygame, 设置展示窗口pygame.init()screen = pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption('catch coins —— ')# 加载必要的游戏素材game_images = {}for key, value in cfg.IMAGE_PATHS.items():if isinstance(value, list):images = []for item in value: images.append(pygame.image.load(item))game_images[key] = imageselse:game_images[key] = pygame.image.load(value)game_sounds = {}for key, value in cfg.AUDIO_PATHS.items():if key == 'bgm': continuegame_sounds[key] = pygame.mixer.Sound(value)# 返回初始化数据return screen, game_images, game_sounds'''主函数'''
def main():# 初始化screen, game_images, game_sounds = initGame()# 播放背景音乐pygame.mixer.music.load(cfg.AUDIO_PATHS['bgm'])pygame.mixer.music.play(-1, 0.0)# 字体加载font = pygame.font.Font(cfg.FONT_PATH, 40)# 定义herohero = Hero(game_images['hero'], position=(375, 520))# 定义食物组food_sprites_group = sprite.group -()generate_food_freq = random.randint(10, 20)generate_food_count = 0# 当前分数/历史最高分score = 0highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())# 游戏主循环clock = pygame.time.Clock()while True:# --填充背景screen.fill(0)screen.blit(game_images['background'], (0, 0))# --倒计时信息countdown_text = 'Count down: ' + str((90000 - pygame.time.get_ticks()) // 60000) + ":" + str((90000 - pygame.time.get_ticks()) // 1000 % 60).zfill(2)countdown_text = font.render(countdown_text, True, (0, 0, 0))countdown_rect = countdown_text.get_rect()countdown_rect.topright = [cfg.SCREENSIZE[0]-30, 5]screen.blit(countdown_text, countdown_rect)# --按键检测for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()key_pressed = pygame.key.get_pressed()if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:hero.move(cfg.SCREENSIZE, 'left')if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:hero.move(cfg.SCREENSIZE, 'right')# --随机生成食物generate_food_count += 1if generate_food_count > generate_food_freq:generate_food_freq = random.randint(10, 20)generate_food_count = 0food = Food(game_images, random.choice(['gold',] * 10 + ['apple']), cfg.SCREENSIZE)food_sprites_group.add(food)# --更新食物for food in food_sprites_group:if food.update(): food_sprites_group.remove(food)# --碰撞检测for food in food_sprites_group:if pygame.sprite.collide_mask(food, hero):game_sounds['get'].play()food_sprites_group.remove(food)score += food.scoreif score > highest_score: highest_score = score# --画herohero.draw(screen)# --画食物food_sprites_group.draw(screen)# --显示得分score_text = f'Score: {score}, Highest: {highest_score}'score_text = font.render(score_text, True, (0, 0, 0))score_rect = score_text.get_rect()score_rect.topleft = [5, 5]screen.blit(score_text, score_rect)# --判断游戏是否结束if pygame.time.get_ticks() >= 90000:break# --更新屏幕pygame.display.flip()clock.tick(cfg.FPS)# 游戏结束, 记录最高分并显示游戏结束画面fp = open(cfg.HIGHEST_SCORE_RECORD_FILEPATH, 'w')fp.write(str(highest_score))fp.close()return showEndGameInterface(screen, cfg, score, highest_score)'''run'''
if __name__ == '__main__':while main():pass

二.俄罗斯方块

困难难度:❤❤

玩法介绍:小时候的经典游戏,加速玩法有一点点难度。

源码分享

import os
import sys
import random
from modules import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *'''定义俄罗斯方块游戏类'''
class TetrisGame(QMainWindow):def __init__(self, parent=None):super(TetrisGame, self).__init__(parent)# 是否暂停ingself.is_paused = False# 是否开始ingself.is_started = Falseself.initUI()'''界面初始化'''def initUI(self):# iconself.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))# 块大小self.grid_size = 22# 游戏帧率self.fps = 200self.timer = QBasicTimer()# 焦点self.setFocusPolicy(Qt.StrongFocus)# 水平布局layout_horizontal = QHBoxLayout()self.inner_board = InnerBoard()self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)layout_horizontal.addWidget(self.external_board)self.side_panel = SidePanel(self, self.grid_size, self.inner_board)layout_horizontal.addWidget(self.side_panel)self.status_bar = self.statusBar()self.external_board.score_signal[str].connect(self.status_bar.showMessage)self.start()self.center()self.setWindowTitle('Tetris —— 九歌')self.show()self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())'''游戏界面移动到屏幕中间'''def center(self):screen = QDesktopWidget().screenGeometry()size = self.geometry()self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)'''更新界面'''def updateWindow(self):self.external_board.updateData()self.side_panel.updateData()self.update()'''开始'''def start(self):if self.is_started:returnself.is_started = Trueself.inner_board.createNewTetris()self.timer.start(self.fps, self)'''暂停/不暂停'''def pause(self):if not self.is_started:returnself.is_paused = not self.is_pausedif self.is_paused:self.timer.stop()self.external_board.score_signal.emit('Paused')else:self.timer.start(self.fps, self)self.updateWindow()'''计时器事件'''def timerEvent(self, event):if event.timerId() == self.timer.timerId():removed_lines = self.inner_board.moveDown()self.external_board.score += removed_linesself.updateWindow()else:super(TetrisGame, self).timerEvent(event)'''按键事件'''def keyPressEvent(self, event):if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:super(TetrisGame, self).keyPressEvent(event)returnkey = event.key()# P键暂停if key == Qt.Key_P:self.pause()returnif self.is_paused:return# 向左elif key == Qt.Key_Left:self.inner_board.moveLeft()# 向右elif key == Qt.Key_Right:self.inner_board.moveRight()# 旋转elif key == Qt.Key_Up:self.inner_board.rotateAnticlockwise()# 快速坠落elif key == Qt.Key_Space:self.external_board.score += self.inner_board.dropDown()else:super(TetrisGame, self).keyPressEvent(event)self.updateWindow()'''run'''
if __name__ == '__main__':app = QApplication([])tetris = TetrisGame()sys.exit(app.exec_())

三、消消乐

困难难度:❤❤ 需要源码的点击这里

玩法介绍:以前经典的游戏,给我感觉趣味性少了点

源码分享

import os
import sys
import cfg
import pygame
from modules import *'''游戏主程序'''
def main():pygame.init()screen = pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption# 加载背景音乐pygame.mixer.init()pygame.mixer.music.load(os.path.join(cfg.ROOTDIR, "resources/audios/bg.mp3"))pygame.mixer.music.set_volume(0.6)pygame.mixer.music.play(-1)# 加载音效sounds = {}sounds['mismatch'] = pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/badswap.wav'))sounds['match'] = []for i in range(6):sounds['match'].append(pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/match%s.wav' % i)))# 加载字体font = pygame.font.Font(os.path.join(cfg.ROOTDIR, 'resources/font/font.TTF'), 25)# 图片加载gem_imgs = []for i in range(1, 8):gem_imgs.append(os.path.join(cfg.ROOTDIR, 'resources/images/gem%s.png' % i))# 主循环game = gemGame(screen, sounds, font, gem_imgs, cfg)while True:score = game.start()flag = False# 一轮游戏结束后玩家选择重玩或者退出while True:for event in pygame.event.get():if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):pygame.quit()sys.exit()elif event.type == pygame.KEYUP and event.key == pygame.K_r:flag = Trueif flag:breakscreen.fill((135, 206, 235))text0 = 'Final score: %s' % scoretext1 = 'Press <R> to restart the game.'text2 = 'Press <Esc> to quit the game.'y = 150for idx, text in enumerate([text0, text1, text2]):text_render = font.render(text, 1, (85, 65, 0))rect = text_render.get_rect()if idx == 0:rect.left, rect.top = (212, y)elif idx == 1:rect.left, rect.top = (122.5, y)else:rect.left, rect.top = (126.5, y)y += 100screen.blit(text_render, rect)pygame.display.update()game.reset()'''run'''
if __name__ == '__main__':main()

四、飞机大战

困难难度:❤❤

玩法介绍:并夕夕版飞机大战,也是个双人小游戏。

五、保卫森林

抓狂难度:❤❤❤ 需要源码,

玩法介绍:塔防类小游戏,个人喜欢玩的一类,比较考验策略和大局安排。

想要一起学习一起玩耍的可以扫码加好友

六、贪吃蛇

经典的电子游戏,使用箭头导航控制蛇去吃绿色食物。每次一次食物,蛇身就长出一格。吃到自己或者出界游戏结束。

七、西蒙说:经典的记忆拼图游戏

单击屏幕开始。观察图案,然后按相同顺序单击瓷砖。每次敲对顺序,系统就会增加一步继续开始游戏。

八、迷宫

从一边移到另一边。灵感来源于一行代码中的一个宇宙与10个打印。轻触屏幕可跟踪从一侧到另一侧的路径。

你喜欢哪一款呢?赶快抓紧时间动起手来找回童年回忆!

用python制作几款简单又好玩的小游戏,找回童年的记忆相关推荐

  1. python代码翻译器-利用Python制作一款简单的翻译软件

    导语 之前写了两篇: Python之百度翻译小爬虫Python之有道翻译小爬虫 随手再加个Google翻译,然后把它们整合到一个Demo上,制作了一款简单的翻译软件.让我们愉快地开始吧~ 开发工具 P ...

  2. 【Unity2d】带你制作一款类似于金山打字的小游戏

    博主大概08年开始接触电脑游戏,当时玩的是我哥的电脑,那时候家里没网,只可以玩电脑上自带的单机游戏,比如扫雷.蜘蛛纸牌等等,当然还有红色警戒.冰封王座.星际争霸.帝国崛起等等,这些大概是我哥当时在大学 ...

  3. 使用Python开发一个超级简单的接水果小游戏,零基础也可以学会

    Pylash项目地址 创建项目 这样的话我们的项目就创建好了,然后只用往Main.py里填写代码运行即可. 编写Hello World小程序 编写游戏 有以上对pylash的小小了解,我们接下来可以开 ...

  4. python接水果游戏代码_使用Python开发一个超级简单的接水果小游戏,零基础也可以学会...

    Pylash项目地址 创建项目 这样的话我们的项目就创建好了,然后只用往Main.py里填写代码运行即可. 编写Hello World小程序 编写游戏 有以上对pylash的小小了解,我们接下来可以开 ...

  5. python接水果游戏代码_【Python】python制作一个接水果和金币的小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 ...

  6. python制作一个接水果和金币的小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 关注公众号:Python学习指南,回复"game9"获取相关文件 ...

  7. 小哥哥你有98K吗?利用Python制作一款多功能变声器!

    前言 好吧,关于这句小哥哥你有98K吗?出自别人口中经常说的玩笑话,我也略懂一些游戏嘛.不过不常玩,废话不多说,开始咱们今天的教程,非常简单! 利用Python制作一款多功能变声器! 咱们首先登陆百度 ...

  8. 如何使用Python制作一款国际象棋小游戏

    如果你想使用 Python 制作国际象棋游戏,可以使用如下步骤: 设计棋盘:可以使用一个二维数组来存储棋盘上每一个位置的棋子. 实现棋子移动:可以使用一个函数来处理棋子的移动,并在棋子移动过程中进行限 ...

  9. Python制作简单的终端交互小游戏

    Python制作简单的终端交互小游戏 因为最近的集训课程中,老师让我们把python,java,nodejs都需要掌握,本人最常使用的是java,python许久没有用过,就想写一段逻辑来帮助自己复习 ...

  10. 用python做C语言的猜数字游戏,[Python3 练习] 007 简单的猜数字小游戏

    题目:简单的猜数字小游戏 (1) 描述 程序随机生成一个数字,玩家用键盘输入所猜数字,在规定次数内猜对为胜. (2) 要求 程序随机生成一个 1 到 100 的自然数 有 7 次机会去猜 机会用尽之前 ...

最新文章

  1. 编程正式进入中考模式!北京海淀:通过信息技术考试方可毕业
  2. windows下用easybcd引导ubuntu出现grub的解决方案
  3. wamp php5.6 mysql5.6,WampServer 3.0.6 多语言版 集成apache2.4.23 mysql5.7.14 php5.6.25-7.0.10 穿墙书店...
  4. JavaScript常用工具Date对象和Math介绍介绍
  5. C语言宏的特殊用法和几个坑
  6. 发现三个很赞的英语学习网站
  7. Linux数据报文的来龙去脉
  8. python 对任意文件(jpg,png,mp3,mp4)base64的编码解码
  9. 洋葱细胞数字全息显微实验演示
  10. Git、Svn等版本控制管理工具的使用总结(附idea整合git)
  11. 机器学习在社会科学中的应用
  12. 方差及常见分布的方差计算与推导
  13. SqlServer 备份还原
  14. 主打产品“火力不足”致使发行人持续盈利能力下降,这公司创业板IPO被终止
  15. js中三大特殊数据underfined,null,NaN
  16. C#/.NET 通过代码打开浏览器
  17. xp怎么删除计算机管理员用户名和密码,Windows XP 的 Administrator 超级管理员密码忘记了,如何清除?...
  18. 有一个好的身体太重要了
  19. php批量裁剪图片,怎么批量裁剪图片 按照一定的比例快速裁剪多张照片的方法,自定义裁剪图片大小...
  20. Socket/Tcp游戏通信(一)-IP和端口号

热门文章

  1. 【BZOJ】【2752】【HAOI2012】高速公路(Road)
  2. silverlight控件动画状态的过渡
  3. 《分布式系统原理与范型》习题答案 5.同步
  4. [yui][译]Yahoo!User Interface Libray 介绍 (转)
  5. WinForm上显示gif动画
  6. 如何恢复原来数据库中的用户?
  7. cvResize() 图像放缩
  8. 前端封装接口弹出错误_用SpringBoot教你写出优雅的后端接口
  9. Python的动态特性(类实例增加属性,动态变量类型)
  10. debug HTTP的一个GUI工具NetTool