1.功能描述
几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。本次编写一个简化的创建游戏角色的程序。

2.游戏角色应有的属性
本题目要求的游戏角色应有以下属性:名字、性别、种族、职业、力量、敏捷、体力、智力、智慧、生命值和魔法值。
名字:不超过50个字符。
性别:可以选择男性和女性。
种族:一共可选五个种族,人类、精灵、兽人、矮人和元素。
职业:可选六种职业,狂战士、圣骑士、刺客、猎手、祭司和巫师。
其余属性均为整数。
本题目要求首先用户输入角色姓名,然后由用户选择角色性别,然后由用户选择种族,然后选择职业,然后自动分配力量、敏捷、体力、智力和智慧属性,并计算生命值和魔法值。
生命值=体力*20。
魔法值=(智力+智慧)*10。
3.职业限制
很多职业会限制某些种族选择,例如兽人不能就职圣骑士等等,种族和职业的限制表如下:
种族/职业 狂战士 圣骑士 刺客 猎手 祭司 巫师
人类 允许 允许 允许 允许 允许 允许
精灵 不允许 不允许 允许 允许 允许 允许
兽人 允许 不允许 不允许 允许 允许 不允许
矮人 允许 允许 不允许 不允许 允许 不允许
元素 不允许 不允许 不允许 不允许 允许 允许
所以在要求用户选择职业时,输出信息里面只能有用户所选择种族可以就职的职业。
4.初始属性
本题目要求力量、敏捷、体力、智力和智慧要求是随机值(利用随机数函数来取得随机数),但是五项属性的总和应该是100,并且应该和职业相关。例如狂战士的体力和力量就要比较高,而巫师需要较高的智力,而祭司则需要较高的智慧。各职业初始属性的大致比例应遵从下表:
职业/属性 力量 敏捷 体力 智力 智慧
狂战士 40 20 30 5 5
圣骑士 25 15 30 20 10
刺客 20 35 20 15 10
猎手 15 40 15 10 20
祭司 15 20 15 35 15
巫师 10 20 10 20 40
例如,前面示意图中的祭司的初始属性,大致满足该比例,但是应该是随机的。
然后利用属性值计算生命值和魔法值。
5.显示信息
最后向用户显示该角色的所有信息,然后询问用户是否满意,如用户不满意则重新创建,若用户满意则程序结束,并将用户创建角色的相关信息写入文件保存。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>int getwork(int race)     //通过种族来选取职业(不同种族可选的职业不同)
{int work;switch(race){case 0:{printf("请选择您的职业(0狂战士,1圣骑士,2刺客,3猎手,4祭司,5巫师);");scanf("%d",&work);break;}case 1:{printf("请选择您的职业(2刺客,3猎手,4祭司,5巫师);");scanf("%d",&work);break;}case 2:{printf("请选择您的职业(0狂战士,3猎手,4祭司,5巫师);");scanf("%d",&work);break; }case 3:{printf("请选择您的职业(0狂战士,3猎手,4祭司);");scanf("%d",&work);break;}case 4:{printf("请选择您的职业(0狂战士,1圣骑士,3猎手,4祭司);");scanf("%d",&work);break;}case 5:{printf("请选择您的职业(4祭司,5巫师);");scanf("%d",&work);break;}}return work;} void printproperty(char *uname,int sex,int race,int work,int power,int agility,int phypower,int clever,int wisdom,int life,int magic)//输出和保存该游戏角色的各项属性
{FILE *fp;                              //定义文件指针 fp=fopen("角色属性.txt","a");         //以读写的方式打开角色属性文本文档 printf("====================\n");printf("姓名   %s\n",uname);fprintf(fp,"姓名   %s\n",uname);printf("====================\n");if(sex==0){printf("性别   男性\n");fprintf(fp,"性别 男性\n");}else{printf("性别   女性\n");fprintf(fp,"性别 女性\n");} printf("====================\n");switch(race){case 0:{printf("种族   人类\n");fprintf(fp,"种族 人类\n");break;} case 1:{printf("种族 精灵\n");fprintf(fp,"种族 精灵\n");break;} case 2:{printf("种族 兽人\n");fprintf(fp,"种族 兽人\n");break;} case 3:{printf("种族 矮人\n");fprintf(fp,"种族 矮人\n");break;} case 4:{printf("种族 元素\n");fprintf(fp,"种族 元素\n");break;} }printf("====================\n");switch(work){case 0:{printf("职业    狂战士\n");fprintf(fp,"职业    狂战士\n");break;}case 1:{printf("职业 圣骑士\n");fprintf(fp,"职业    圣骑士\n");break;}case 2:{printf("职业 刺客\n");fprintf(fp,"职业 刺客\n");break;}case 3:{printf("职业  猎手\n");fprintf(fp,"职业 猎手\n");break;}case 4:{printf("职业  祭司\n");fprintf(fp,"职业 祭司\n");break;}case 5:{printf("职业  巫师\n");fprintf(fp,"职业 巫师\n");break;}}printf("====================\n");printf("力量  %d\n",power);fprintf(fp,"力量   %d\n",power);printf("====================\n");printf("敏捷    %d\n",agility);fprintf(fp,"敏捷 %d\n",agility);printf("====================\n");printf("体力  %d\n",phypower);fprintf(fp,"体力    %d\n",phypower);printf("====================\n"); printf("智力    %d\n",clever);fprintf(fp,"智力  %d\n",clever);printf("====================\n");printf("智慧   %d\n",wisdom);fprintf(fp,"智慧  %d\n",wisdom);printf("====================\n");printf("生命值  %d\n",life);fprintf(fp,"生命值   %d\n",life);printf("====================\n");printf("魔法值    %d\n",magic);fprintf(fp,"魔法值  %d\n",magic);printf("====================\n");fprintf(fp,"===================\n");fclose(fp);}int getproperty(char *uname,int sex,int race,int work)        //得到角色的各项属性值
{int power,agility,phypower,clever,wisdom,life,magic;switch(work){case 0:{                              //力量,敏捷,体力,智力,智慧均是随机值,且和为100 power=rand()%3+37;                            //通过rand函数得到随机值 agility=rand()%3+18;phypower=rand()%3+28;clever=rand()%3+3;wisdom=100-power-agility-phypower-clever;break;}case 1:{power=rand()%3+23;agility=rand()%3+14;phypower=rand()%3+28;clever=rand()%3+19;wisdom=100-power-agility-phypower-clever;break;}case 2:{power=rand()%3+17;agility=rand()%3+34;phypower=rand()%3+18;clever=rand()%3+13;wisdom=100-power-agility-phypower-clever;break;}case 3:{power=rand()%3+14;agility=rand()%3+37;phypower=rand()%3+14;clever=rand()%3+8;wisdom=100-power-agility-phypower-clever;break;}case 4:{power=rand()%3+14;agility=rand()%3+17;phypower=rand()%3+14;clever=rand()%3+34;wisdom=100-power-agility-phypower-clever;break;}case 5:{power=rand()%3+8;agility=rand()%3+18;phypower=rand()%3+7;clever=rand()%3+18;wisdom=100-power-agility-phypower-clever;break;}}life=phypower*20;                                           //求生命值 magic=(clever+wisdom)*10;                                  //求魔法值 printproperty(uname,sex,race,work,power,agility,phypower,clever,wisdom,life,magic);}
int main()
{char uname[20];int t=1;int sex,race,work;while(t){printf("请输入您游戏角色的姓名:");scanf("%s",&uname);printf("请输入您游戏角色的性别(0男性,1女性):");scanf("%d",&sex);printf("请选择您游戏角色的种族(0人类,1精灵,2兽人,3矮人,4元素):");scanf("%d",&race);work=getwork(race);getproperty(uname,sex,race,work);printf("是否满意该角色的所有信息(0满意,1不满意)?");scanf("%d",&t);}printf("角色信息已全部存入名为《角色属性》的文本文档中"); return 0;
}

本程序包含三个函数:getwork(),getproperty(),printproperty()。
getwork()函数主要通过选择的种族不同来进行不同的职业选择,最后得到职业。
getproperty()函数用来获取游戏角色的各项属性,包括,力量、敏捷、智力、体力、智慧、生命值和魔法值。其中力量、敏捷、智力、体力、智慧是通过函数rand()随机获取的,且他们的和为100;
printproperty()函数是用来输出游戏角色的所有属性,并将这些属性在输出的同时存入到文件中。
若是玩家满意该角色的话,程序会自动结束,若是不满意的话,会重新选择各项属性,直到玩家满意为止。

C语言实现创建游戏角色(包含文件写入)相关推荐

  1. 几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。本次上机要求编写一个简化的创建游戏角色的程序。

    一:题目分析 1.功能描述 几乎所有的RPG游戏(一种源自<龙与地下城>的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色.本次上机要求编写一个简化的创建游戏角色的程序. 2.游戏 ...

  2. C++ RPG创建游戏角色

    创建游戏角色``` (1).功能描述 几乎所有的RPG游戏(一种源自<龙与地下城>的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色.本次上机要求编写一个简化的创建游戏角色的程序. ...

  3. RPG角色生成器 1.功能描述 几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。要求编写一个简化的创建游戏角色的程序。 2.游戏角色应

    RPG角色生成器 1.功能描述 几乎所有的RPG游戏(一种源自<龙与地下城>的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色.本次上机要求编写一个简化的创建游戏角色的程序. 2. ...

  4. 用一个简单的创建游戏角色方案来理解类继承的运用以及浅淡protected权限修饰符的作用。

    最近不知道怎得懒了许多,就是不想写总结. 想了想还是在这里说下protected的权限关系吧,怕大家在后面找不到 首先我们可能在学c++中都会听到老师说protected权限是介于public和pri ...

  5. C++实现游戏角色属性(包含文件写入)

    1.功能描述 几乎所有的RPG游戏(一种源自<龙与地下城>的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色.本次编写一个简化的创建游戏角色的程序. 2.游戏角色应有的属性 本题目 ...

  6. Delta3D(5)教程:创建游戏角色-1

    通过上一篇的介绍,应该对游戏角色有所了解了.下面,我们将创建我们自己的游戏角色,它是一个坦克,我们将通过代码编写此角色,然后生成一个角色库将其加载到场景编辑器,并创建一个小的包含坦克角色的场景地图. ...

  7. JavaFX战旗类游戏开发 第三课 创建游戏角色

    在上一节课程中,我们学习了在JavaFX中绘制游戏地图.这一节课,我们将会创建我们的游戏角色. 首先,同样的,我们创建一个简单的基类. import javafx.scene.canvas.Graph ...

  8. c语言打造dnf游戏角色视频,主播DK:展示成果!打造20个武炼18个卢克C角色! - 地下城与勇士掌游宝...

    DNF大家已经玩了很久了,虽然一直有人说DNF不好玩,天天喊着要脱坑,但是当他们玩别的游戏被小学生坑,被挂吊打,最后不还是回来玩DNF了吗,虽然嘴上很强硬但是身体还是很老实的~有人说DNF不好玩,但是 ...

  9. 【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查

    一.需求分析 1.职工信息管理系统的目标是为方便管理层对职工的信息管理,要如何设计一个操作简便且又能很好的管理职工信息的系统就要涉及到各种逻辑问题. 2.管理系统将可以对职工信息进行操作,对职工信息进 ...

  10. C语言中创建自己函数库文件流程

    1.新建一个.h,写声明语句(包括宏定义.变量声明.函数原型声明),如:fun.h #define __fun__ #ifndef __fun__ int fun(int x); //continue ...

最新文章

  1. MOQ TIP1:简介加基础
  2. linux系统如何查看是否是线程死锁,多线程中如何使用gdb精确定位死锁问题
  3. 【MSLearn 学习模块】Hi ! ⼀起来学Python
  4. 【ECharts系列|02可视化大屏】 舆情分析,人口分析及警情警力活动情况的实现【下篇】
  5. system函数的返回值和执行脚本的返回值
  6. linux怎么打开pak文件怎么打开,在elementary OS系统中开启Flatpak应用程序支持
  7. python笔记记录(包和模块)
  8. android 15 activity跳转
  9. 台达b3伺服参数设置方法_台达伺服基本参数设置
  10. 计算机图形学基础-第二章 VB.NET 绘图基础
  11. 米聊PC版体验评测: 简约过头的即时聊天工具
  12. 九天·毕昇中国移动平台安装MMdetection
  13. 上海仰邦BX-5K1,BX-5K2系列板卡加入定时开关指令后死机现象及解决方案
  14. Windows最强ssh客户端 Bitvise SSH Client 与阿里堡垒服务
  15. 在TCGA中查找mutation突变
  16. 数据FIFO的读写和信息FIFO的基本使用方法
  17. mro python_Python-MRO
  18. html页面在线预览PDF文件
  19. 新浪微博正在审核的开发者平台应用添加测试账号
  20. 上报下单行为 腾讯广告 微信 公众号 PHP

热门文章

  1. ACM——01——1003: 【入门】求任意三位数各个数位上数字的和 【运算符】
  2. 三角函数与代数恒等式(1)
  3. 移动端touch事件和鼠标事件
  4. Android手机ERP开发(一)
  5. ubuntu系统调节显卡GPU风扇转速
  6. 独家分享《非诚勿扰2》普清下载 葛优 舒淇 姚晨 孙红雷 邵兵 安以轩 廖凡
  7. 西安交大计算机814大纲,西安交大考研辅导班:西安交通大学2020年809电子技术基础考研科目参考书目及考试大纲...
  8. On-premise是什么意思?
  9. 如何使用商品历史价格查询网站
  10. 平面设计初学者如何入门