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

article/2025/9/12 0:42:22

今天给大家带来几个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个打印。轻触屏幕可跟踪从一侧到另一侧的路径。
在这里插入图片描述

你喜欢哪一款呢?赶快抓紧时间动起手来找回童年回忆!
在这里插入图片描述


http://chatgpt.dhexx.cn/article/hOMXvw0y.shtml

相关文章

简易的Python小游戏

文章目录 一、第一次写Python小游戏二、对小游戏进行改进1.对玩家进行提示2.提供多次机会给玩家3.每次答案应该是随机的 三、总结 一、第一次写Python小游戏 刚开始学习Python这门计算机语言&#xff0c;所以在网上找了一个非常简易的小游戏来进行模仿编写&#xff0c;目的是从…

python小游戏代码200行左右,python编程小游戏代码

大家好&#xff0c;本文将围绕python小游戏代码200行左右展开说明&#xff0c;小游戏程序代码python是一个很多人都想弄明白的事情&#xff0c;想搞清楚python编程小游戏代码需要先了解以下几个事情。 1、python简单小游戏代码 怎么用Python制作简单小游戏 1、Python猜拳小游戏…

python入门小游戏代码20行,python入门小游戏代码

python入门可以做的小游戏 1、Python入门拼图小游戏简单介绍&#xff1a;将图像分为mn个矩形块&#xff0c;并将图像右下角的矩形块替换为空白块后&#xff0c;将这些矩形块随机摆放成原图像的形状。 2、Python入门推箱子小游戏简单介绍&#xff1a;这是来自日本的一个经典游…

Python自制小游戏【附源码 直接运行】

上班不知道怎么摸鱼&#xff1f;代码敲累了直接自制小游戏放松一下&#xff01;今天给大家分享七个小游戏&#xff0c;可以从周一玩到周日&#xff0c;不重样的那种。 赶紧点赞收藏起来吧&#xff01; 1.消消乐 源代码与学习资料领取 &#x1f449; https://jq.qq.com/?_wv1…

用Python制作简单的小游戏

朋友们大家好&#xff0c;相信大部分人都喜欢玩游戏&#xff0c;无论是在工作间隙还是下班回家的路上&#xff0c;可能都会拿起手机玩游戏打发时间&#xff0c;亦或是在游戏中寻找乐趣&#xff0c;放松自己。上 我跟大家分享的内容主要是用Python的Pygame Zero模块来制作小游戏…

用Python实现的这五个小游戏,你真的学会了嘛?

相关文件 源码分享&#xff0c;问题解答&#xff01;&#xff01; 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件三连哟~~ 对了大家可以关注小编的公众号哟~~ 有很多资源可以领取的哟&#xff01;&#xff01; Python日志 游戏名称 五子棋雷霆战机贪吃蛇…

Python实现四个经典小游戏合集

这篇文章主要介绍了利用Python编写一个经典小游戏的合集,包括:贪吃蛇,扫雷,俄罗斯方块,五子棋。感兴趣的小伙伴可以跟随小编一起学习一下 目录 一、效果展示 1、俄罗斯方块2、扫雷3、五子棋4、贪吃蛇二、代码展示 1、俄罗斯方块2、扫雷3、五子棋4、贪吃蛇 一、效果展示 …

10个python入门小游戏,零基础打通关,就能掌握编程基础

前言 不会python就不能用python开发入门级的小游戏&#xff1f; 当然不是&#xff0c;我收集了十个python入门小游戏的源码和教程&#xff0c;并且即使你没有python基础&#xff0c;只要跟着这十个小游戏的开发详细教程去做&#xff0c;以及有了全部的源码&#xff0c;那就能…

python小游戏源码

见缝插针小游戏&#xff0c;设置关卡&#xff0c;难度逐渐增大&#xff0c;效果图如下&#xff0c;需要的话去个人主页提取资源 部分代码如下&#xff1a; def __init__(self, angle): self.x x0 self.y y0 length self.center (self.x, self.y) …

10个python经典小游戏(上)-五一嗨起来(动图演示+源码分享)

&#x1f41a;作者简介&#xff1a;苏凉&#xff08;专注于网络爬虫&#xff0c;数据分析&#xff09; &#x1f433;博客主页&#xff1a;苏凉.py的博客 &#x1f451;名言警句&#xff1a;海阔凭鱼跃&#xff0c;天高任鸟飞。 &#x1f4f0;要是觉得博主文章写的不错的话&…

30个Python小游戏,小白练手,我都能玩一天

大家好&#xff0c;我是雨雨~ 今天给大家带来30个py小游戏&#xff0c;一定要收藏&#xff01;全部源码都整理好了小游戏源码腾讯文档-在线文档https://docs.qq.com/doc/DRnZDTnFGVUFMc3FL 有手就行 1、吃金币 【有手就行系列不介绍玩法了附源码】 源码分享&#xff1a; i…

6个Python童年小游戏,开始敲起来,玩吧!

你的童年&#xff0c;我的童年好像都一样&#xff0c;谁的童年又没玩过游戏呢&#xff0c;这些小游戏应该只有玩过才会懂吧 虽然程序员敲代码多年&#xff0c;但童心还是一直都在的&#xff0c;今天就分享一些私藏的童年游戏&#xff0c;十几行代码就能进入使用Python开发的小…

Java开发面试简历这么写,命中率达70%

上篇文章我们了解到&#xff0c;想要有面试机会&#xff0c;首先要完成一份好的简历。但是在撰写简历的时候&#xff0c;往往有一些细节很容易被忽视&#xff0c;导致面试机会远远不如自己的期望值。一份经过优化的简历&#xff0c;面试的命中率可以达到70%。那我们就来看看&am…

java开发个人简历模板_java程序开发个人简历模板

java程序开发需要有扎实的程序编码知识&#xff0c;下面java程序开发个人简历模板是小编为大家带来的&#xff0c;欢迎浏览。 java程序开发个人简历模板 延伸阅读 面试&#xff0c;简历很重要&#xff0c;那好的简历模板应该如何制作呢? 写简历之前&#xff0c;你得先站在用人…

JAVA开发(nginx)

主要描述下面4个内容&#xff1a; 1.Nginx的正向代理和反向代理 2.Nginx的动静分离 3.Nginx的负载均衡 4.Nginx的配置详解 解释&#xff1a; Nginx的正向代理&#xff1a;代理的是客户端。 Nginx的反向代理&#xff1a;代理的是服务端。在web服务中&#xff0c;一般都是…

8年Java开发教你如何写简历

前言 成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备七种核心能力&#xff1a;编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。 这几种能力之间的关系大概如下图。编程能力、调试能力和编…

java开发简历项目经验,面试必会

java基础 1.1java的8种基本数据类型装箱拆箱 1.2重写重载封装继承多态 1.3 Stack Queue 1.7 Concurrent包 1.8面向对象 1.9 String StringBuffer StringBuilder hashcode equ 1.10 java文件读取 1.11 Java反射 1.12 JDK NDK JRE JNI 1.13 static和final的区别 1.14 …

java有关物流管理的简历_Java开发实习生大学生简历模板

求职意向 Java开发实习生 福建福州 薪资面议 随时到岗 教育背景 2020.x -2020x 锤子简历大学 软件工程(本科) 通过CET4/6等级考试 主修课程&#xff1a;Java程序设计、Web程序设计、JavaEE应用开发、数据库系统原理、Linux操作系统、数据通信与计算机网络。 工作经验 2020.x -2…

《R语言入门》如何在Windows下安装R语言编程环境

R语言主页&#xff1a;https://www.r-project.org/ R语言开发环境下载安装地址&#xff1a;https://cran.r-project.org/mirrors.html 这是一个下载镜像站点的列表页面&#xff0c;之前贴了其中一个的链接&#xff0c;结果过了一段时间之后不能访问了&#xff1b; 有Linux…

R语言安装ggcor包

找了很多方法&#xff0c;一直安装不上去&#xff0c;后来把包下载了本地&#xff0c;用本地安装的方法&#xff0c;也还是报错。后来兜兜转转找到了这个方法&#xff0c;非常好用&#xff01;参考了看见你啦&#xff0c;自己根据实际情况&#xff0c;也稍作修改。 1.下载ggco…