C#控制台RPG游戏,面向对象练习

本文分享了一个C#控制台RPG游戏的实现,旨在帮助学习者理解面向对象编程。游戏包含角色选择、技能、商店、战斗系统和升级功能,运用了封装、继承和多态的概念。提供了项目截图、部分源码和完整源码下载链接。
摘要由CSDN通过智能技术生成

简介

闲来无事写的一个C#控制台应用程序,本RPG游戏有多种角色属性供你选择,拥有技能,商店,丰富的战斗系统和升级功能。学习C#的朋友可以看一看,对面向对象很有帮助。使用了封装 继承和多态思想。

项目实例截图

部分项目源码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace RPG_Fairyland_MiracleTour
{
    /// <summary>
    /// 职业枚举变量 用于判断选择的职业
    /// </summary>
    enum Enum_GameRoles
    {
        Enum_Warrior,
        Enum_Wizard
    }
    class Program
    {
        //生成一个玩家角色
        public static PlayerRoles _PlayerRoles = new PlayerRoles();
        //生成一个战士类变量
        public static PlayerRoles _RolesWarrior = new PlayerRoles();
        //生成一个法师类变量
        public static PlayerRoles _RolesWizard = new PlayerRoles();
        //生成一个玩家背包
        public static GamePackage _PlayerPackage = new GamePackage();
        //生成一个武器商店
        public static WeaponStore _WeaponStore = new WeaponStore();
        //生成一个技能
        public static Skill _Skill = new Skill();
        //声明一个用于保存玩家选择角色的枚举
        public static Enum_GameRoles Enum_GamePlayerRoles;
        //判断角色是否选择了使用技能的变量
        public static bool Bskill;
        //玩家的角色等级变量,用于判断是否解锁新场景
        static int PGrade = 1;
        //武士的Hp临时变量,用于在战斗前保存Hp,并在战斗后恢复
        public static int HPTemp = 1000;
        //法师的Hp临时变量,用于在战斗前保存Hp,并在战斗后恢复
        public static int HPTempWizard = 800;
        static void Main(string[] args)
        {
            Start();
            Console.ReadKey();
        }
        /// <summary>
        /// 开始游戏函数
        /// </summary>
        static void Start()
        {
            //更改控制台 抬头
            Console.Title = "RPG-奇迹之城";
            Console.WriteLine("\n\t**************欢迎进入游戏**************");
            Thread.Sleep(1000);
            Console.WriteLine("\n   是否开始游戏?     Y.我已准备好了     N.我再想想看");
            //判断玩家的按键,是否退出
            ConsoleKeyInfo Downkey = Console.ReadKey(true);
            //玩家如果选择了退出游戏,就返回这个函数,退出游戏
            if (Downkey.Key.Equals(ConsoleKey.N))
            {
                Thread.Sleep(500);
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("\n\t**************下次再见,谢谢(^_^)************");
                return;
            }
            //玩家如果选择了继续游戏,调用加载延时函数,出现一个load加载画面
            Load();
            //等待延时,制作游戏加载的假象
            Thread.Sleep(1000);
            //提示玩家输入一个角色的姓名
            Console.WriteLine("\n\n\t**************请输入角色姓名**************");
            Console.Write("\n\t**************角色姓名为:");
            //获取玩家输入的角色姓名,并且更改玩家角色类中的玩家角色姓名
            _PlayerRoles.Name = Console.ReadLine();
            //用于判断用户选择的职业,如果选择错误,将不退出这个死循环
            while (true)
            {
                //等待延时,制作游戏加载的假象
                Thread.Sleep(1000);
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("\n\t请选择职业:1.战士\t2.法师");
                //判断玩家的按键,获得玩家选择职业
                ConsoleKeyInfo Downkey1 = Console.ReadKey(true);
                //如果选择1,生成战士
                if (Downkey1.Key.Equals(ConsoleKey.D1)|| Downkey1.Key.Equals(ConsoleKey.NumPad1))
                {
                    //进入战士函数,生成一个战士
                    GameWarrior();
                    break;
                }
                //如果选择2,生成法师
                else if (Downkey1.Key.Equals(ConsoleKey.D2) || Downkey1.Key.Equals(ConsoleKey.NumPad2))
                {
                    //进入法师函数,生成一个法师
                    GameWizard();
                    break;
                }
                //选择其他,提示输入错误,重新输入,直到输入正确退出这个死循环
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Thread.Sleep(500);
                    Console.WriteLine("\n\t很抱歉,您输入的有误,当前职业不存在");
                }
            }
        }
        /// <summary>
        /// 游戏背景函数
        /// </summary>
        static void GameBackground()
        {
            Console.WriteLine("\n\t**************游戏马上开始**************");
            //调用加载延时函数,出现一个load加载画面
            Load();
            //游戏背景对话
            Thread.Sleep(1000);
            Console.Write("\n\n\n\t\t好黑!!!");
            Thread.Sleep(400);
            Console.WriteLine("我这是在哪?∑(°Д°)");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t嗷呜~~~嗷呜~~~");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t啊!!!狼!!!!!!!!!");
            Thread.Sleep(1000);
            Console.WriteLine("\n\n* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
            Console.ReadKey();
            Thread.Sleep(1000);
            Console.WriteLine("\n\n\n\t\t迷迷糊糊睁开眼······");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t你醒了?");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t我怎么了?我这是在哪???");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t别害怕,这是我家,我在城外的森林里发现的你的时候你已经晕倒了。");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t我怎么什么都不记得了???");
            Thread.Sleep(1000);
            Console.WriteLine("\n\n\n* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
            Console.ReadKey();
            Thread.Sleep(1000);
            Console.WriteLine("\n\n\t\t* * * * * * * * * 一年之后* * * * * * * * *");
            Thread.Sleep(500);
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\n\t\t* * * * * * * 解锁新场景小村村 * * * * * * * ");
            Console.ForegroundColor = ConsoleColor.White;
            //调用选择判断函数,引导玩家进行选择判断
            GameChoice();
        }
        /// <summary>
        /// 生成一个玩家 角色是战士
        /// </summary>
        static void GameWarrior()
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\n\t**************选择成功,您选择的职业是战士");
            Console.ForegroundColor = ConsoleColor.White;
            //战士的血量
            _RolesWarrior.Hp = 1000;
            //战士的攻击力
            _RolesWarrior.Attack =63;
            //战士的防御力
            _RolesWarrior.Defense = 65;
            //战士的金钱
            _RolesWarrior.Money = 30000;
            //战士的经验
            _RolesWarrior.Experience = 0;
            //战士的等
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值