30个Python小游戏,小白练手,我都能玩一天【内附源码】

article/2025/10/5 17:56:07

今天给大家带来30个py小游戏,一定要收藏!
全部源码都整理好了,在文章最底部~

有手就行

1、吃金币

【有手就行系列不介绍玩法了+附源码】
在这里插入图片描述
源码分享:

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 = pygame.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

2、打乒乓

在这里插入图片描述

3、滑雪

在这里插入图片描述

4、并夕夕版飞机大战

在这里插入图片描述

5、打地鼠

在这里插入图片描述

简简单单

【简单介绍一下玩法+附源码】

6、小恐龙

玩法:上下控制起跳躲避
在这里插入图片描述

7、消消乐

玩法:三个相连就能消除
在这里插入图片描述

8、俄罗斯方块

玩法:童年经典,普通模式没啥意思,小时候我们都是玩加速的。
在这里插入图片描述

9、贪吃蛇

玩法:童年经典,普通魔术也没啥意思,小时候玩的也是加速的。
在这里插入图片描述

普普通通

【玩法详细介绍+源码】

10、24点小游戏

玩法:通过加减乘除操作,小学生都没问题的。
在这里插入图片描述

11、平衡木

玩法:也是小时候的经典游戏,控制左右就行,到后面才有一点点难度。
在这里插入图片描述
【还有配置文件】

12、外星人入侵

玩法:这让我想起了魂斗罗那第几关的boss,有点类似,不过魂斗罗那个难度肯定高点。
在这里插入图片描述

13、贪心鸟

玩法:有点类似那个炸弹人,控制好走位问题不大。
在这里插入图片描述

14、井字棋888‘’

玩法:我打赌大家在课堂上肯定玩过这个,想想当年和同桌玩这个废了好几本本子。
在这里插入图片描述

有点困难

【玩法详解+源码获取看底部】

15、炸弹人

玩法详解:小时候的又一经典游戏,小时候很多次都被自己炸死了。
在这里插入图片描述

16、保卫森林

玩法详解:类似保卫萝卜,塔防类的小游戏,布局一定要合理,考虑射程属性等等
在这里插入图片描述

17、五子棋

玩法详解:小时候很爱玩,先出是有必胜方法的,后面才知道会有禁手这个规则,就比较复杂了,大家可以学一下先出必胜的开局,有浦月、流星、丘月、游星、慧星等等。
在这里插入图片描述

18、吃豆豆

玩法详解:考验手速和操作和走位,我不喜欢玩这类跑来跑去的。
在这里插入图片描述

19、坦克大战

玩法详解:这是经典中的经典,我喜欢玩双人模式,后面有一些改版的模式,这是我觉得少数几个现在玩都不过时的游戏。
在这里插入图片描述

20、超级玛丽

玩法详解:经典中的经典,小时候玩觉得可难了,操作不必介绍了吧。
在这里插入图片描述

21、水果忍者

玩法详解:切水果风靡一时的游戏,不知道为啥总是切刀炸掉,挺解压的游戏。
在这里插入图片描述

极度困难

【攻略大全+源码获取看底部】

22、飞机大战

攻略大全:从这里开始的游戏,真正算的上有难度了,这个飞机大战跟童年玩的比起来还是差一点。
在这里插入图片描述

23、2048

攻略大全:也是曾经风靡一时的,越到后面越难,合成的时候一定要大数放在角落。
在这里插入图片描述

24、推箱子

攻略大全:以前的那个手机上都有的游戏,越推到后面的关卡越难,我好像是玩到二十多关就玩不下去了。
在这里插入图片描述

25、塔防

攻略大全:又是一种塔防类的游戏,有点意思,就是速度太快了,反应不过来。
在这里插入图片描述

26、植物大战僵尸

攻略大全:最经典的植物大战僵尸,操作不用介绍了,不过可以自己玩玩看。
在这里插入图片描述

27、扫雷

玩法详解:扫雷还是挺有意思的,技能玩又考验推理
在这里插入图片描述

终极挑战

【太难了。。源码领取看文章底部】

28、拼图

游戏体验:三个终极挑战,能完成一个就算你厉害,拼图是我最烦的,太难了。
在这里插入图片描述

29、走迷宫

游戏体验:我反正没走出去,大家能走出去吗
在这里插入图片描述

30、最强游戏

游戏体验:可太难控制了。。
在这里插入图片描述

30个Python小游戏全部源码

行业资料:添加即可领取PPT模板、简历模板、行业经典书籍PDF。面试题库:历年经典,热乎的大厂面试真题,持续更新中,添加获取。学习资料:含Python、爬虫、数据分析、算法等学习视频和文档。

朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

在这里插入图片描述
最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。


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

相关文章

迷你项目python

迷你项目python 骰子模拟器石头剪刀布随机密码生成器 骰子模拟器 目的:创建一个程序来模拟掷骰子。 提示:当用户询问时,使用random模块生成一个1到6之间的数字。 import random while int(input(press 1 to roll the dice or 0 to exit:\n…

23款小游戏-Python一行代码就能玩

给IT入门加星标,提升编程技能 free-python-games,一行代码就能进入使用Python开发的小游戏快乐玩耍! 安装 pip?install?freegamesPython包括随您的安装一起分发的大量标准库。标准库有一个称为Turtle的模块,这是一种向普通人…

Python游戏开发实战:飞机大战(含代码)

【课程简介】 玩游戏老是输,不如试试自己做个游戏当欧皇。本次课程教大家如何通过pygame模块实现游戏, 以飞机大战为例,讲解游戏的基本机制, 让大家掌握游戏实现原理 ,触类旁通更多Python游戏开发。 【课程推荐】Python游戏开发实战&#x…

【Python游戏】Python各大游戏合集:超级玛丽、天天酷跑、我的世界、魔塔、雷霆战机 | 附带源码

相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号:Python日志 可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!! 源码领取:加P…

13个Python小游戏(含源码),开始敲起来,玩吧!

来源丨网络 经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个P…

30个Python小游戏,上班摸鱼我能玩一天【内附源码】

大家好,我是辣条。 今天给大家带来30个py小游戏,一定要收藏! 目录 有手就行 1、吃金币 2、打乒乓 3、滑雪 4、并夕夕版飞机大战 5、打地鼠 简简单单 6、小恐龙 7、消消乐 8、俄罗斯方块 9、贪吃蛇 普普通通 10、24点小游戏 1…

iosetup mysql_InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts

在一台服务器中以各数据库的备份文件为数据文件启动多个MySQL实例供SQL Review使用。 之前运行一直没有问题(最多的时候有23个MySQL实例同时运行),后来新配置了一台服务器,启动其对应的实例时失败。 部分错误日志如下: …… 140505 16:05:59 …

linux系统中socket错误码:EINTR和EAGAIN的处理

目录 人为重启被中断的系统调用 安装信号时设置 SA_RESTART属性 忽略信号 永远阻塞的系统调用,被信号中断,导致其不继续等待,转而去执行signal_handler 1、什么是慢系统调用? 该术语适用于那些可能永远阻塞的系统调用。永远阻…

iosetup mysql_InnoDB: Error: io_setup() failed with EAGAIN

最近安装好了MySQL之后,在启动MySQL服务时无法正常启动MySQL。提示没有更新/var/lib/mfailedZDB.pid并退出。该MySQL与Oracle位于同一主机。有些内核参数进行过调整应该也是使用与MySQL。下面是该问题的具体描述。 1、故障现象SZDB:/usr/src/mysql_src # /etc/init.…

blocking socket 读写返回 EAGAIN

非阻塞的 socket 读写操作返回 EAGAIN,表示当前已经读完内核缓冲区或者写满内核缓冲区,需要等待下一次 select/poll/epoll 事件到来时再操作。 对于阻塞的 socket 读写操作,如果内核缓冲区是空,read 将一直阻塞;如果不…

【Linux Socket C++】为什么IO复用需要用到非阻塞IO?EAGAIN的简单介绍与应用

目录 为什么IO复用需要非阻塞的IO EAGAIN的介绍 EAGAIN的应用 为什么IO复用需要非阻塞的IO 我们可以先看一下官方的回答: 在Linux命令行输入:man 2 select 找到[BUGS],如下: 官方给予的回答是这样的: Under Lin…

avcodec_receive_frame始终返回EAGAIN

今天我们研究一个问题: avcodec_receive_frame()始终返回EAGAIN 根本的解决方案还需要深入debug,但是这个函数很太复杂,需要些时间和耐心; 目前在不考虑编解码性能的情况下,能work around的方法只有一个,那…

APK加固(梆梆助手)

前言:朋友在使用梆梆时出现Apk加固后安装失败的现象,所以自己写篇小白文 1.进入梆梆官网(注册) 2.下载梆梆助手(点击加固工具) 本人电脑是Windows系统(下载) 3.安装后&#xff0c…

使用360进行apk加固并进行2次签名整体流程

因新版360加固助手需要付费才能进行自动签名,故只能自己手动来签名了~ 1.使用Android studio进行首次签名并打包apk 首先选择build下该选项 选择apk 如果没有key,则点击新建 需要输入key存储的位置,key store密码,key别名&#…

Android-APK加固-简单版

Android-APK加固-简单版 Proguard的使用与配置介绍开启proguard常用配置 加固大体思路 源码(浅析)思路 撸码解密工具类-AES(解密时用)工具类-Zip(压缩、解压)工具类-Utils(反射操作)…

Android Apk加固后手动签名

手动签名 : 不用任何第三方可视化工具签名 ,使用命令做签名。手动签名原因:以前加固签名都是使用第三方工具操作,最近发现工具都开始收费了,免费的羊毛没得薅了,收费价格极高 5000/年/App, (加固…

手写apk加固

手写apk加固 加壳解压原apk并加密重命名dex文件对壳文件操作打包压缩成apk文件签名 脱壳运行解压原apk, 解密原dex文件加载原dex文件 demo下载 apk加固的目的其实就是对app的核心代码做防护工作,避免被其他人反编译; 废话不多说了,直接开始! …

android apk 加固后重新签名

针对于加固平台在加固的过程中不能配置签名文件,加固后的apk需要进行重新签名才能安装,并发布到应用市场。 第一步,用AS对项目进行打包,生成签名的apk文件。 第二步,使用加固平台,对apk包进行加固&#xff…

Android Apk加固原理解析

前言 为什么要加固 对APP进行加固,可以有效防止移动应用被破解、盗版、二次打包、注入、反编译等,保障程序的安全性、稳定性。 常见的加固方案有很多,本文主要介绍如果通过对dex文件进行加密来达到apk加固的目的; APK加固整体…

apk加固后再签名

目录 前言v1签名v1v2签名 前言 apk更新之前需要做安全检测,检测之前一版会做加固处理,加固后还需要重新进行签名。本文介绍一下v1签名和v1v2签名两种方式。 有文章说需要把apk原来的签名文件,即META-INF文件夹删除,实测不删好像也…