当前位置:首页>python>16个Python小游戏(附源码),有手就行,拿走即用!

16个Python小游戏(附源码),有手就行,拿走即用!

  • 2026-09-08 09:01:35
16个Python小游戏(附源码),有手就行,拿走即用!
计算机专业
Python小游戏一直是编程学习者喜爱的实践项目,既能巩固基础知识,又能体验开发的乐趣。在探索过程中,关于Python小游戏的教程和代码分享并不少见,但很多都存在代码不全、运行报错或功能缺失的问题,让学习者感到困扰。本文整理了16款经典的Python小游戏,每款都提供完整可运行的代码,经过严格测试确保能够顺利执行。

1. 五子棋

童年游戏不可缺少的五子棋,你攻我守,守中进攻,五子棋一玩就可以玩一下午。

'''游戏开始界面'''class gameStartUI(QWidget):    def __init__(self, parent=None, **kwargs):        super(gameStartUI, self).__init__(parent)        self.setFixedSize(760, 650)        self.setWindowTitle('五子棋 —— 九歌')        self.setWindowIcon(QIcon(cfg.ICON_FILEPATH))        # 背景图片        palette = QPalette()        palette.setBrush(self.backgroundRole(), QBrush(QPixmap(cfg.BACKGROUND_IMAGEPATHS.get('bg_start'))))        self.setPalette(palette)        # 按钮        # --人机对战        self.ai_button = PushButton(cfg.BUTTON_IMAGEPATHS.get('ai'), self)        self.ai_button.move(250, 200)        self.ai_button.show()        self.ai_button.click_signal.connect(self.playWithAI)        # --联机对战        self.online_button = PushButton(cfg.BUTTON_IMAGEPATHS.get('online'), self)        self.online_button.move(250, 350)        self.online_button.show()        self.online_button.click_signal.connect(self.playOnline)    '''人机对战'''    def playWithAI(self):        self.close()        self.gaming_ui = playWithAIUI(cfg)        self.gaming_ui.exit_signal.connect(lambda: sys.exit())        self.gaming_ui.back_signal.connect(self.show)        self.gaming_ui.show()

2.炸弹人

如果你是一个80后,那么炸弹人绝度是你童年的欢乐之一,虽然简单而粗糙的画面,却依旧抵挡不了它在FC上的经典。

'''游戏主程序'''def main(cfg):    # 初始化    pygame.init()    pygame.mixer.init()    pygame.mixer.music.load(cfg.BGMPATH)    pygame.mixer.music.play(-1, 0.0)    screen = pygame.display.set_mode(cfg.SCREENSIZE)    pygame.display.set_caption('Bomber Man —— 九歌')    # 开始界面    Interface(screen, cfg, mode='game_start')    # 游戏主循环    font = pygame.font.SysFont('Consolas', 15)    for gamemap_path in cfg.GAMEMAPPATHS:        # -地图        map_parser = mapParser(gamemap_path, bg_paths=cfg.BACKGROUNDPATHS, wall_paths=cfg.WALLPATHS, blocksize=cfg.BLOCKSIZE)        # -水果        fruit_sprite_group = pygame.sprite.Group()        used_spaces = []        for i in range(5):            coordinate = map_parser.randomGetSpace(used_spaces)            used_spaces.append(coordinate)

3.推箱子

不禁回味起了童年,推箱子顾名思义就是推箱子。用键盘上的上、下、左、右键移动小人,把箱子全部推到指定的位置即可过关。箱子只能推,不能拉,并且小人一次只能推动一个箱子。

'''开始游戏'''def startGame(screen):    clock = pygame.time.Clock()    # 加载字体    font = pygame.font.SysFont('arial', 18)    if not os.path.isfile('score'):        f = open('score', 'w')        f.write('0')        f.close()    with open('score', 'r') as f:        highest_score = int(f.read().strip())    # 敌方    enemies_group = pygame.sprite.Group()    for i in range(55):        if i < 11:            enemy = enemySprite('small', i, cfg.WHITE, cfg.WHITE)        elif i < 33:            enemy = enemySprite('medium', i, cfg.WHITE, cfg.WHITE)        else:            enemy = enemySprite('large', i, cfg.WHITE, cfg.WHITE)        enemy.rect.x = 85 + (i % 11) * 50        enemy.rect.y = 120 + (i // 11) * 45        enemies_group.add(enemy)    boomed_enemies_group = pygame.sprite.Group()    en_bullets_group = pygame.sprite.Group()    ufo = ufoSprite(color=cfg.RED)

4.俄罗斯方块

回味一下属于我们的童年~俄罗斯方块,如果要说到游戏圈里的资历,俄罗斯方块应该是当之无愧的老大哥了

import osimport sysimport randomfrom 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)        # 是否暂停ing        self.is_paused = False        # 是否开始ing        self.is_started = False        self.initUI()    '''界面初始化'''    def initUI(self):

5.贪吃蛇

还记得当初在黑白掌机上玩的贪吃蛇吗?想重温当时的快乐,当时的回忆吗

import cfgimport sysimport pygamefrom modules import *'''主函数'''def main(cfg):    # 游戏初始化    pygame.init()    screen = pygame.display.set_mode(cfg.SCREENSIZE)    pygame.display.set_caption('Greedy Snake —— 九歌')    clock = pygame.time.Clock()    # 播放背景音乐    pygame.mixer.music.load(cfg.BGMPATH)    pygame.mixer.music.play(-1)    # 游戏主循环    snake = Snake(cfg)    apple = Apple(cfg, snake.coords)    score = 0    while True:
如果你现在还是不会Python也没关系,下面我会给大家免费分享一份Python全套学习资料, 包含视频、源码、课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友。

附录:更多学习资料

python课程400集,2026最新版来啦!!!从零基础开始,全面讲解Python基础,与一般教程不同,该教程增加了手写数据结构和算法、手写神经网络项目。同时加入AI工具编程,让零基础学员在学习Python时就开始接触高深的底层知识、神经网络底层实现的知识。最终达到达可以手写神经网络的境界。

本套视频一共400集,本套视频共分4季:

内容共分26章,讲解了Python基础的方方面面,可以作为Python学习者的“宝典”。同时,穿插了3个大型实战项目:

1. 坦克大战游戏。    采用游戏开发的方式,寓教于乐,快乐中掌握Python基础。

2. 手写算法和数据结构。    算法和数据结构是很多大公司面试的不二选择,我们这里讲解内容的同时,手把手带你实现一个个底层算法,将内功练扎实。

3.手写神经网络。   Python是人工智能的第一语言。我们创造性的在基础课程中就加入了如何编写一个自己的神经网络,为踏入神经网络的大门打下“坚实基础”。

按这个步骤走,你会发现编程真的没那么难~

还有Python电子书,Python练习题,Python练手项目,Python漫画书,Python动画版教程,面试题等等海量学习资料
中/国/传/统/节/日
五月五 过端午

尾语 💝

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

领取方式:

1、点赞+在看  
2、后台回复关键词:学习

最新文章

随机文章