复原20世纪复古修仙游戏

 前言

在本教程中,我突发奇想,想做一个复古的修仙游戏,考虑到以前的情怀决定做个古老的躺平修仙游戏

个人主页→数据挖掘博主ZTLJQ的主页

个人推荐python学习系列:

☄️爬虫JS逆向系列专栏 - 爬虫逆向教学

☄️python系列专栏 - 从零开始学python

完整的所有代码和游戏截图在最底部展示,以下是代码讲解

首先,我们需要导入tkinter库和messagebox模块,以及random库,用于创建游戏界面、显示消息框和生成随机数。

import tkinter as tk
from tkinter import messagebox
import random

接下来,我们创建一个CultivationGame的类,用于管理游戏的界面和逻辑。

class CultivationGame:
    def __init__(self, master):
        self.master = master
        self.master.title("修仙游戏")
        self.master.geometry("800x600")
        self.master.config(bg="#FFEBCD")

CultivationGame类的构造函数__init__中,我们首先传入了一个master参数,表示游戏窗口的父容器。然后,我们设置了游戏窗口的标题为"修仙游戏",大小为800x600像素,背景颜色为淡橙色。

接下来,我们定义了游戏的故事文本和选项按钮。故事文本是一个字典列表,每个字典包含一个故事段落和对应的选项。选项按钮是一个空列表,我们将在后续的代码中动态地添加和更新选项按钮。

        self.story_texts = [
            {"text": "你正在修炼炼气期,集中精神吸收天地灵气。", "options": ["继续修炼", "休息片刻"]},
            {"text": "你遇到了一只妖兽,你决定与其战斗。", "options": ["使用火系法术攻击", "使用水系法术攻击", "逃跑"]},
            {"text": "你闯入了一座迷宫,需要找到出口。", "options": ["向左转", "向右转", "向前走", "向后退"]},
            {"text": "你遇到了一位仙人,他愿意传授你一项神通。", "options": ["学习飞行术", "学习隐身术", "拒绝学习"]},
            {"text": "你遇到了一个难题,需要解决才能继续修炼。", "options": ["解开谜题", "寻找线索", "请求帮助"]},
            {"text": "你得到了一本古老的法术书,里面记载着强大的法术。", "options": ["学习新的法术", "继续修炼已掌握的法术"]},
            {"text": "你决定前往一座神秘的禁地,探索其中的宝藏。", "options": ["进入禁地", "寻找其他修仙者组队"]},
            {"text": "你听说有一座仙山,据说山上有着无尽的灵气。", "options": ["攀登仙山", "寻找其他修仙法"]},
        ]

        self.story_label = tk.Label(master, text="欢迎来到修仙游戏!", font=("Arial", 16), bg="#FFEBCD")
        self.story_label.pack(pady=10)

        self.option_buttons = []
        for i in range(4):
            button = tk.Button(master, text="", font=("Arial", 12), bg="#FFDAB9", relief="groove", width=30, height=2,
                              command=lambda i=i: self.select_option(i))
            button.pack(pady=5)
            self.option_buttons.append(button)

        self.quit_button = tk.Button(master, text="退出游戏", font=("Arial", 12), bg="#FFDAB9", relief="groove", width=30, height=2,
                                     command=self.quit_game)
        self.quit_button.pack(pady=10)

        self.current_step = 0

然后,我们定义了next_step方法,用于显示下一步的故事文本和更新选项按钮。

    def next_step(self):
        if self.current_step >= len(self.story_texts):
            messagebox.showinfo("游戏结束", "恭喜你完成修仙之旅!")
            self.quit_game()
        else:
            story_text = self.story_texts[self.current_step]["text"]
            options = self.story_texts[self.current_step]["options"]
            messagebox.showinfo("故事", story_text)
            self.update_options(options)
            self.current_step += 1

next_step方法中,我们首先检查当前步骤是否超过了故事文本的数量。如果超过了,说明游戏已经结束了,我们会显示一个消息框来告诉玩家。

接着,我们从故事文本列表中获取当前步骤的故事文本和选项。然后,我们使用messagebox模块显示故事文本的消息框,并调用update_options方法来更新选项按钮。

最后,我们将当前步骤加1,表示进入下一步。

    def update_options(self, options):
        for i in range(len(self.option_buttons)):
            if i < len(options):
                self.option_buttons[i].configure(text=options[i], state=tk.NORMAL)
            else:
                self.option_buttons[i].configure(text="", state=tk.DISABLED)

接下来,我们定义了update_options方法,用于更新选项按钮。

update_options方法中,我们使用一个循环来遍历选项按钮列表。如果当前按钮的索引小于选项数量,说明有对应的选项,我们将按钮的文本设置为选项文本,并将按钮设置为可用状态。如果当前按钮的索引超过了选项数量,说明没有对应的选项,我们将按钮的文本设置为空,并将按钮设置为不可用状态。

    def select_option(self, option_index):
        selected_option = self.story_texts[self.current_step - 1]["options"][option_index]
        messagebox.showinfo("选择", f"你选择了:{selected_option}")
        self.next_step()

然后,我们定义了select_option方法,用于处理玩家选择的选项。

select_option方法中,我们首先根据选项的索引获取选项的文本。然后,我们使用messagebox模块显示一个消息框,告诉玩家选择的选项。接着,我们调用next_step方法进入下一步。

    def quit_game(self):
        self.master.destroy()

接下来,我们定义了quit_game方法,用于退出游戏。

quit_game方法中,我们使用destroy方法关闭游戏窗口,从而退出游戏。

最后,我们定义了main函数作为游戏的入口点。

main函数中,我们首先创建一个tkinter的根窗口对象root,然后创建一个CultivationGame对象game,并将根窗口对象作为参数传入。接着,我们调用next_step方法来开始游戏的第一步。最后,我们调用mainloop方法来进入游戏循环,等待玩家的操作。

def main():
    root = tk.Tk()
    game = CultivationGame(root)
    game.next_step()
    root.mainloop()

if __name__ == '__main__':
    main()

以下是游戏的全部代码

import tkinter as tk
from tkinter import messagebox
import random

class CultivationGame:
    def __init__(self, master):
        self.master = master
        self.master.title("修仙游戏")
        self.master.geometry("800x600")
        self.master.config(bg="#FFEBCD")

        self.story_texts = [
            {"text": "你正在修炼炼气期,集中精神吸收天地灵气。", "options": ["继续修炼", "休息片刻"]},
            {"text": "你遇到了一只妖兽,你决定与其战斗。", "options": ["使用火系法术攻击", "使用水系法术攻击", "逃跑"]},
            {"text": "你闯入了一座迷宫,需要找到出口。", "options": ["向左转", "向右转", "向前走", "向后退"]},
            {"text": "你遇到了一位仙人,他愿意传授你一项神通。", "options": ["学习飞行术", "学习隐身术", "拒绝学习"]},
            {"text": "你遇到了一个难题,需要解决才能继续修炼。", "options": ["解开谜题", "寻找线索", "请求帮助"]},
            {"text": "你得到了一本古老的法术书,里面记载着强大的法术。", "options": ["学习新的法术", "继续修炼已掌握的法术"]},
            {"text": "你决定前往一座神秘的禁地,探索其中的宝藏。", "options": ["进入禁地", "寻找其他修仙者组队"]},
            {"text": "你听说有一座仙山,据说山上有着无尽的灵气。", "options": ["攀登仙山", "寻找其他修仙法"]},
        ]

        self.story_label = tk.Label(master, text="欢迎来到修仙游戏!", font=("Arial", 16), bg="#FFEBCD")
        self.story_label.pack(pady=10)

        self.option_buttons = []
        for i in range(4):
            button = tk.Button(master, text="", font=("Arial", 12), bg="#FFDAB9", relief="groove", width=30, height=2,
                              command=lambda i=i: self.select_option(i))
            button.pack(pady=5)
            self.option_buttons.append(button)

        self.quit_button = tk.Button(master, text="退出游戏", font=("Arial", 12), bg="#FFDAB9", relief="groove", width=30, height=2,
                                     command=self.quit_game)
        self.quit_button.pack(pady=10)

        self.current_step = 0

    def next_step(self):
        if self.current_step >= len(self.story_texts):
            messagebox.showinfo("游戏结束", "恭喜你完成修仙之旅!")
            self.quit_game()
        else:
            story_text = self.story_texts[self.current_step]["text"]
            options = self.story_texts[self.current_step]["options"]
            messagebox.showinfo("故事", story_text)
            self.update_options(options)
            self.current_step += 1

    def update_options(self, options):
        for i in range(len(self.option_buttons)):
            if i < len(options):
                self.option_buttons[i].configure(text=options[i], state=tk.NORMAL)
            else:
                self.option_buttons[i].configure(text="", state=tk.DISABLED)

    def select_option(self, option_index):
        selected_option = self.story_texts[self.current_step - 1]["options"][option_index]
        messagebox.showinfo("选择", f"你选择了:{selected_option}")
        self.next_step()

    def quit_game(self):
        self.master.destroy()

def main():
    root = tk.Tk()
    game = CultivationGame(root)
    game.next_step()
    root.mainloop()

if __name__ == '__main__':
    main()

以下是游戏截图

复原20世纪复古修仙游戏_第1张图片

复原20世纪复古修仙游戏_第2张图片

复原20世纪复古修仙游戏_第3张图片

你可能感兴趣的:(参加的比赛以及项目,python,爬虫,网络安全,游戏程序,游戏)