Python毕业设计可用小游戏:5个热门类型,引爆学生热情!每个类型附单独案例!

news2024/11/18 21:30:46

游戏大全

  • 前言
    • 1.格斗技能类小游戏
    • 2.益智塔防类小游戏
    • 3.MMO类型游戏
    • 4.养成类游戏
    • 5.经济类游戏
  • 总结

前言

大家好,我是辣条哥

在当今数字化时代,编程已经成为一项不可或缺的技能。而Python作为一门简洁易学的编程语言,正受到越来越多学生的青睐。为了激发学生对编程的兴趣,我写了一篇小博文,介绍了5个精彩的Python小游戏。记得辣条之前也有写过一期30个摸鱼小游戏,有兴趣的可以直接围观一下

  • 《30个摸鱼小游戏,附源码!》

在这里插入图片描述

这些游戏不仅能够帮助学生巩固编程知识,还能够让他们在游戏中体验到编程的乐趣。无论你是编程新手还是有一定经验的学生,这些游戏都能够帮助你提升编程技能,同时也能够让你感受到编程的魅力。让我们一起来探索这些游戏吧!

1.格斗技能类小游戏

在这里插入图片描述

import random

class Fighter:
    def __init__(self, name, health, attack_power, defense_power):
        self.name = name
        self.health = health
        self.attack_power = attack_power
        self.defense_power = defense_power

    def attack(self, opponent):
        damage = self.attack_power - opponent.defense_power
        if damage > 0:
            opponent.health -= damage
        else:
            damage = 0
        print(f"{self.name}{opponent.name}造成了{damage}点伤害")

    def is_alive(self):
        return self.health > 0

    def __str__(self):
        return f"{self.name} (生命值: {self.health})"

def main():
    player = Fighter("玩家", 100, 20, 10)
    enemy = Fighter("敌人", 100, 15, 5)

    while player.is_alive() and enemy.is_alive():
        print(player)
        print(enemy)
        print("请选择技能:")
        print("1. 普通攻击")
        print("2. 火球术")
        print("3. 治疗术")
        choice = input("请输入选项:")

        if choice == "1":
            player.attack(enemy)
        elif choice == "2":
            damage = random.randint(10, 30)
            enemy.health -= damage
            print(f"{player.name}使用了火球术,对{enemy.name}造成了{damage}点伤害")
        elif choice == "3":
            heal = random.randint(10, 20)
            player.health += heal
            print(f"{player.name}使用了治疗术,恢复了{heal}点生命值")
        else:
            print("无效的选项,请重新选择")

        enemy.attack(player)

    if player.is_alive():
        print("你赢了!")
    else:
        print("你输了!")

if __name__ == "__main__":
    main()

这个小游戏中,玩家和敌人都有生命值、攻击力和防御力属性。玩家可以选择不同的技能进行攻击,包括普通攻击、火球术和治疗术。敌人会随机选择技能进行攻击。当玩家或敌人的生命值降为0时,游戏结束。

2.益智塔防类小游戏

下面是一个简单的益智塔防游戏的Python代码示例:

import random

class Tower:
    def __init__(self, name, damage, range):
        self.name = name
        self.damage = damage
        self.range = range

    def attack(self, enemy):
        if enemy.in_range(self.range):
            enemy.take_damage(self.damage)
            print(f"{self.name}攻击了{enemy.name},造成了{self.damage}点伤害!")
        else:
            print(f"{self.name}攻击失败,{enemy.name}超出了攻击范围!")

class Enemy:
    def __init__(self, name, health, speed):
        self.name = name
        self.health = health
        self.speed = speed

    def in_range(self, range):
        return range >= self.speed

    def take_damage(self, damage):
        self.health -= damage
        if self.health <= 0:
            print(f"{self.name}被击败了!")
        else:
            print(f"{self.name}受到了{damage}点伤害,剩余生命值:{self.health}")

def main():
    tower = Tower("箭塔", 10, 5)
    enemy = Enemy("敌人", 50, random.randint(1, 10))

    while enemy.health > 0:
        tower.attack(enemy)
        enemy.speed = random.randint(1, 10)

if __name__ == "__main__":
    main()

在这个示例中,我们定义了一个Tower类和一个Enemy类。Tower类表示塔的属性和行为,包括名称、伤害和攻击范围。Enemy类表示敌人的属性和行为,包括名称、生命值和速度。

在main函数中,我们创建了一个箭塔和一个敌人,并通过循环让箭塔攻击敌人,直到敌人的生命值降为0。每次攻击时,箭塔会判断敌人是否在攻击范围内,如果是则造成伤害,否则攻击失败。

这只是一个简单的示例,你可以根据自己的需求和想法来扩展和改进这个游戏。

3.MMO类型游戏

在这里插入图片描述

import random

class Player:
    def __init__(self, name):
        self.name = name
        self.level = 1
        self.exp = 0
        self.hp = 100
        self.max_hp = 100
        self.attack = 10
        self.defense = 5

    def gain_exp(self, exp):
        self.exp += exp
        if self.exp >= 100:
            self.level_up()

    def level_up(self):
        self.level += 1
        self.max_hp += 10
        self.hp = self.max_hp
        self.attack += 5
        self.defense += 2
        self.exp = 0

    def take_damage(self, damage):
        actual_damage = max(0, damage - self.defense)
        self.hp -= actual_damage

    def is_alive(self):
        return self.hp > 0

    def __str__(self):
        return f"{self.name} (Level {self.level})"

class Monster:
    def __init__(self, name, level):
        self.name = name
        self.level = level
        self.hp = 50 * level
        self.attack = 5 * level
        self.defense = 2 * level
        self.exp_reward = 20 * level

    def take_damage(self, damage):
        actual_damage = max(0, damage - self.defense)
        self.hp -= actual_damage

    def is_alive(self):
        return self.hp > 0

    def __str__(self):
        return f"{self.name} (Level {self.level})"

def main():
    player_name = input("请输入你的角色名字:")
    player = Player(player_name)

    monsters = [
        Monster("小怪兽", 1),
        Monster("中怪兽", 2),
        Monster("大怪兽", 3)
    ]

    while True:
        monster = random.choice(monsters)
        print(f"\n你遇到了一个{monster}!")
        print("你的状态:")
        print(player.__str__())
        print("怪物的状态:")
        print(monster.__str__())

        while player.is_alive() and monster.is_alive():
            action = input("\n请选择你的行动(1-攻击,2-逃跑):")
            if action == "1":
                monster.take_damage(player.attack)
                print(f"你对{monster.name}造成了{player.attack}点伤害!")
                if monster.is_alive():
                    player.take_damage(monster.attack)
                    print(f"{monster.name}对你造成了{monster.attack}点伤害!")
            elif action == "2":
                print("你逃跑了...")
                break
            else:
                print("无效的行动!")

        if player.is_alive():
            player.gain_exp(monster.exp_reward)
            print(f"\n你击败了{monster.name},获得了{monster.exp_reward}点经验值!")
        else:
            print("\n你被击败了...")
            break

        if player.level == 4:
            print("\n恭喜你通关了!")
            break

if __name__ == "__main__":
    main()

这个小游戏中,玩家可以创建一个角色并与怪物战斗。玩家和怪物都有自己的属性,如等级、生命值、攻击力和防御力。玩家可以选择攻击怪物或逃跑。如果玩家击败怪物,将获得经验值并升级。如果玩家被怪物击败,游戏结束。当玩家达到等级4时,游戏通关。

4.养成类游戏

在这里插入图片描述

import random

class Pet:
    def __init__(self, name):
        self.name = name
        self.hunger = 0
        self.happiness = 100

    def feed(self):
        self.hunger -= random.randint(5, 15)
        if self.hunger < 0:
            self.hunger = 0
        self.happiness += random.randint(5, 10)
        if self.happiness > 100:
            self.happiness = 100

    def play(self):
        self.hunger += random.randint(5, 10)
        if self.hunger > 100:
            self.hunger = 100
        self.happiness += random.randint(10, 20)
        if self.happiness > 100:
            self.happiness = 100

    def status(self):
        print(f"{self.name}: Hunger: {self.hunger}, Happiness: {self.happiness}")

pet_name = input("Enter your pet's name: ")
pet = Pet(pet_name)

while True:
    action = input("Enter an action (feed, play, status, quit): ")
    if action == "feed":
        pet.feed()
    elif action == "play":
        pet.play()
    elif action == "status":
        pet.status()
    elif action == "quit":
        break
    else:
        print("Invalid action. Please try again.")

这个养成类游戏中,你可以给你的宠物喂食和玩耍,以提高它的饥饿度和幸福度。你可以通过输入不同的指令来执行不同的操作,如喂食、玩耍、查看宠物状态和退出游戏。

5.经济类游戏

在这里插入图片描述

import random

class Player:
    def __init__(self, name):
        self.name = name
        self.money = 1000
        self.inventory = {}

    def buy_item(self, item, price):
        if self.money >= price:
            self.money -= price
            if item in self.inventory:
                self.inventory[item] += 1
            else:
                self.inventory[item] = 1
            print(f"{self.name}购买了{item},花费了{price}金币。")
        else:
            print(f"{self.name}的金币不足,无法购买{item}。")

    def sell_item(self, item, price):
        if item in self.inventory and self.inventory[item] > 0:
            self.money += price
            self.inventory[item] -= 1
            print(f"{self.name}出售了{item},获得了{price}金币。")
        else:
            print(f"{self.name}的背包中没有{item},无法出售。")

    def show_inventory(self):
        print(f"{self.name}的背包:")
        for item, quantity in self.inventory.items():
            print(f"{item}: {quantity}")

    def show_money(self):
        print(f"{self.name}的金币:{self.money}")

def main():
    player = Player("玩家1")

    while True:
        print("\n1. 购买物品")
        print("2. 出售物品")
        print("3. 查看背包")
        print("4. 查看金币")
        print("5. 退出游戏")
        choice = input("请选择操作:")

        if choice == "1":
            item = input("请输入要购买的物品:")
            price = random.randint(100, 500)
            player.buy_item(item, price)
        elif choice == "2":
            item = input("请输入要出售的物品:")
            price = random.randint(50, 200)
            player.sell_item(item, price)
        elif choice == "3":
            player.show_inventory()
        elif choice == "4":
            player.show_money()
        elif choice == "5":
            print("游戏结束。")
            break
        else:
            print("无效的选择,请重新输入。")

if __name__ == "__main__":
    main()

这个简单的经济类游戏中,玩家可以购买物品、出售物品、查看背包和金币数量。每次购买和出售物品时,物品的价格是随机生成的。玩家的初始金币数量为1000,可以通过出售物品获得金币。玩家的背包使用字典来存储物品和数量。

总结

在这里插入图片描述

通过编写这五个Python小游戏,我深刻体会到了数字化时代对学生们的吸引力。从代码的编写到游戏的设计,我不仅锻炼了自己的编程能力,还感受到了数字化热梗的魅力。每个游戏都融入了当代学生喜闻乐见的元素,让我在编程的过程中感受到了无穷的乐趣和创造力。通过这些游戏,我不仅学到了更多关于Python编程的知识,还培养了解决问题和创新思维的能力。我相信,对于当代学生来说,掌握Python编程并通过游戏来实践,不仅能够提升自己的技能,还能够开拓思维,拓展未来的可能性。让我们一起踏上这个数字化热梗之旅吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/813617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

03_使用execle表生成甘特图

背景 每次排期都需要话很多时间 很可能排期还不对头 这时候需要一个表能看到 1.什么时候项目结束 开始 转阶段 2.当前手上的活能不能做完 当前阶段手上有多少活 3.产品经理每次修改完计划迅速排期 甘特图生成 execle表生成 1.需要使用亿图创建甘特图 2.把当前的甘特图数据进…

使用Excel建立贷款损失计算器

前几天上了一门Excel课程&#xff0c;掌握了一些新的小技能&#xff0c;比如模拟运算表和控件以及动态图表的使用&#xff0c;结合工作内容进行了下实操练习。 一、控件和动态图表的使用 以贷款产品的损益测算为例&#xff0c;计算在不同资金成本、获客成本、提前还款损失以及风…

SpringBoot2.5.6整合Elasticsearch7.12.1

SpringBoot2.5.6整合Elasticsearch7.12.1 下面将通过SpringBoot整合Elasticseach&#xff0c;SpringBoot的版本是2.5.6&#xff0c;Elasticsearch的版本是7.12.1。 SpringBoot整合Elasticsearch主要有三种方式&#xff0c;一种是通过elasticsearch-rest-high-level-client&am…

c++里的基础类 is_empty_v<_Ty1>

&#xff08;1&#xff09;为什么要研究这个问题&#xff0c;因为包括智能指针等很多源代码里都会使用 _Compressed_pair 这个类&#xff0c;其是一对值。研究这个类&#xff0c;就牵涉另一个更基础的类 is_empty_v<_Ty1> &#xff08;2&#xff09; is_empty_v<_Ty1&…

内部类(下)匿名内部类,静态内部类的使用

文章目录 前言一、匿名内部类二、静态内部类三、内部类的继承总结 前言 该文将会介绍匿名内部类、静态内部类的使用&#xff0c;补充完毕java中的内部类。补充内容为向上转型为接口、使用this关键字获取引用、内部类的继承。 一、匿名内部类 定义&#xff1a;没有名称的内部类。…

redis 淘汰策略和持久化

文章目录 一、淘汰策略1.1 背景1.2 淘汰策略 二、持久化2.1 AOF日志2.1.1 AOF配置2.1.2 AOF策略2.1.3 AOF缺点2.1.4 AOF Rewrite2.1.5 AOF Rewrite配置2.1.6 AOF Rewrite缺点2.1.7 fork进程时的写时复制2.1.8 大key对持久化的影响 2.2 RDB快照2.2.1 RDB配置2.2.2 RDB缺点 2.3 混…

二分查找算法(全网最详细代码演示)

二分查找也称 半查找&#xff08;Binary Search&#xff09;&#xff0c;它时一种效率较高的查找方法。但是&#xff0c;折半查找要求线性表必须采用顺序存储结构&#xff0c;而且表中元素按关键字 有序 排列。 注意&#xff1a;使用二分查找的前提是 该数组是有序的。 在实际开…

web前端常用调试工具

概述 当我们写 webapp 或者 移动端H5网页时&#xff0c;要在手机上调试并不容易。 alert&#xff1a;很早之前的调试办法&#xff08;已被抛弃&#xff09; vconsole&#xff1a;是2016年由微信公众平台前端团队推出&#xff08;目前大量使用&#xff09; eruda&#xff1a…

解读随机森林的决策树:揭示模型背后的奥秘

一、引言 随机森林[1]是一种强大的机器学习算法&#xff0c;在许多领域都取得了显著的成功。它由多个决策树组成&#xff0c;而决策树则是构建随机森林的基本组件之一。通过深入解析决策树&#xff0c;我们可以更好地理解随机森林模型的工作原理和内在机制。 决策树是一种树状结…

虚拟现实技术(VR)

目录 1.什么是虚拟现实技术 2.虚拟现实技术的由来 3.虚拟现实技术给人类带来的好处 4.虚拟现实技术未来的走向 1.什么是虚拟现实技术 虚拟现实技术&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;是一种通过计算机生成的模拟环境&#xff0c;使用户能够身临其境…

【js】经纬度位置获取navigator.geolocation.getCurrentPosition:

文章目录 一、经纬度位置获取navigator.geolocation.getCurrentPosition二、getCurrentPosition()在google chrome上不起作用 一、经纬度位置获取navigator.geolocation.getCurrentPosition 【文档】https://developer.mozilla.org/zh-CN/docs/Web/API/Window/navigator // 获取…

Redis 数据库高可用

Redis 数据库的高可用 一.Redis 数据库的持久化 1.Redis 高可用概念 &#xff08;1&#xff09;在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 …

《MySQL 实战 45 讲》课程学习笔记(三)

事务隔离 事务就是要保证一组数据库操作&#xff0c;要么全部成功&#xff0c;要么全部失败。 隔离性与隔离级别 事务特性&#xff1a;ACID&#xff08;Atomicity、Consistency、Isolation、Durability&#xff0c;即原子性、一致性、隔离性、持久性&#xff09;。当数据库上…

Web-1-网站工作流程介绍

我们学习web开发&#xff0c;首先要知道什么是Web&#xff1f; Web: 全球广域网&#xff0c;也称为万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站 比如我展示的这京东&#xff0c;淘宝唯品会都叫做网站&#xff0c;那么现在大家想一下&#xff0c;你还知道什…

用Ubuntu交叉编译Linux内核源码并部署到树莓派4B上

参考文章 1. 配置交叉编译环境 之前在ubuntu上配置过了&#xff0c;直接跳过 2.获取Linux内核源码 Linux内核源码链接 到链接里面选择自己合适版本的内核源码下载下来&#xff0c;然后传到ubuntu中进行解压 3.Linux内核源码的配置 参考文章 厂家配linux内核源码&#xff…

数据可视化库pyecharts简单入门

文章目录 0. 介绍1. 快速开始1.1 安装1.1.1 pip安装1.1.2 源码安装 1.2 快速上手1.2.1 柱状图1.2.2 链式调用1.2.3 使用options选项配置参数&#xff08;一切皆options&#xff09;1.2.4 渲染成图片文件1.2.5 使用主题1.2.6 地图 2. 全局配置项2.1 使用指南2.2 常用全局配置项2…

直呼牛逼!阿里最新 SpringBoot 进阶笔记涵盖了 SpringBoot 所有骚操作

相信从事 Java 开发的朋友都听说过 SSM 框架&#xff0c;老点的甚至经历过 SSH&#xff0c;说起来有点恐怖&#xff0c;比如我就是经历过 SSH 那个时代未流。当然无论是 SSM 还是 SSH 都不是今天的重点&#xff0c;今天要说的是 Spring Boot&#xff0c;一个令人眼前一亮的框架…

Intellij IDEA有什么奇技淫巧?

IDEA全称 IntelliJIDEA&#xff0c;是java语言开发的集成环境&#xff0c;IntelliJ在业界被公认为最好的java开发工具之一&#xff0c;尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超常的。 idea下载…

【大数据趋势】7月30日 汇率,恒指期货的大数据趋势概率分析。

1. 数据源头之一 : 汇率变化 从程序模拟趋势来看&#xff0c;美元在持续弱势状态&#xff0c;周线上正在构建一个新的下跌趋势&#xff0c;而且正在反抽过程中&#xff0c;即将完成&#xff0c;如果没有外部干预&#xff0c;会顺势往下。从月线来看&#xff0c;高点逐步降低&a…

【论文笔记】神经网络压缩调研

神经网络压缩调研 背景现有的深度模型压缩方法NetWork Prunning 网络剪枝设计结构化矩阵知识蒸馏权值共享Parameter Quantization&#xff08;参数量化&#xff09;量化和二进制化伪量化Architecture Design&#xff08;Depth Separable Convolution&#xff09;分解卷积 背景 …