C语言实现背包商城的小项目

简介:
用C语言实现
1.账号登录(包括创建账号)
2.个人账号信息显示
3.背包操作
4.商城操作
5.背包升级
6.切换账号与退出游戏

源代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
结构体
1.商品结构-名称、单价、库存量、描述
2.角色结构-编号、名称、密码、金钱、点券(背包)
3.背包结构-角色编号、游戏道具(商品[])、道具数量*/
typedef struct _thing
{int id;                 //道具编号char name[50];          //道具名称double price;           //单价int exist;              //道具数量char desc[200];         //道具描述
}Thing;typedef struct _bag
{int playid;         // 所属角色编号int count;          //背包道具数量int max;            //背包当前容量Thing things[10]; //背包道具信息
}Bag;typedef struct _people
{int id;             //角色编号char name[20];      //角色名称char password[20];  // 密码Bag bag;            //角色背包double money;       //金币double turemoney;   //点券,可用于解锁背包格子
}People;//整体变量,方便更改
int m=13;            //定义商城道具种类
int n=5;            //定义角色数量
double p=100;       //背包扩展所需点券
int q=10;           //背包最大的容量
//新增账号
People people_chu[]={{101,"白起","a1",{101,0,2},50000,300},{102,"赵云","b2",{102,0,2},100000,200},{103,"后羿","c3",{103,0,2},15000,100},{104,"李白","d4",{104,0,2},60000,400},{105,"孙尚香","e5",{105,0,2},70000,200}};
//初始化商城道具
Thing thing_chu[]={{1,"破晓",3400,2,"【被动】 唯一被动—破甲:+22.5%物理穿透(远程英雄使用时效果翻倍)   唯一被动:普通攻击伤害提升50点(远程英雄使用时效果翻倍)"},{2,"无尽战刃",2140,5,"【属性】+ 120物理攻击,+20%暴击率    【被动】 唯一被动:+50%暴击效果"},{3,"宗师之力",2100,6,"【属性】 物理攻击+60,暴击率+20%,最大法力+400,最大生命+400   【被动】 唯一被动—强击:使用技能后,2秒内提升自身8%移动速度,并使得下次普通攻击造成额外1.0*物理攻击的物理伤害,冷却时间2秒"},{4,"纯净苍穹",2230,4,"【属性】+40%攻击速度,+20%暴击率     【被动】 唯一被动—精准:普通攻击附带60点物理伤害;唯一被动—驱散:90秒CD,受到的所有伤害降低50%,持续1.5秒,可以在被控制时使用"},{5,"制裁之刃",1800,7,"【属性】 +100物理攻击,+10%物理吸血   【被动】 唯一被动—精准:普通攻击附带60点物理伤害;唯一被动—重伤:造成伤害使得目标的生命恢复效果减少50%,持续1.5秒(如果该伤害由普攻触发,则持续时间延长至3秒)"},{6,"末世",2160,6,"【属性】+ 60物理攻击,+30%攻击速度,+10%物理吸血     【被动】 唯一被动—破败:普通攻击附带敌人当前生命值8%的物理伤害(对野怪最多80)"},{7,"名刀司命",1760,10,"【属性】+ 60物理攻击,+5%冷却缩减     【被动】 唯一被动—暗幕:免疫致命伤并免疫伤害,增加20%移动速度持续1秒近战/0.5秒远程,90秒冷却"},{8,"碎星锤",2100,8,"属性】+ 80物理攻击,+10%冷却缩减      【被动】 唯一被动:+45%物理护甲穿透"},{9,"泣血之刃",1740,8,"【属性】+ 100物理攻击,+25%物理吸血"},{10,"破军",2950,3,"【属性】+ 200物理攻击    【被动】 唯一被动—破军:目标生命低于50%时伤害提高30%"},{11,"闪电匕首",1840,5,"【属性】+ 30%攻击速度,+20%暴击率,+8%移速  【被动】 唯一被动—电弧:普通攻击有30%几率释放连锁闪电,对目标造成100+0.3AD法术伤害"},{12,"影刃",2070,6,"【属性】+ 40%攻击速度,+20%暴击率,+5%移速    【被动】 唯一被动—暴风:暴击后提升自身30%攻击速度和10%移动速度,持续2秒"},{13,"暗影战斧",2090,6,"【属性】+ 85物理攻击,+15%冷却缩减,+400最大生命【被动】 唯一被动—残废:普通攻击有30%几率降低敌人20%移动速度,持续2秒唯一被动—切割:增加(50+英雄等级*10)点护甲穿透"}
};
//显示商城道具
void show_thing()      //初始化道具函数
{int i;printf("========================================================================================================================\n");printf("编号\t名称    \t单价    \t库存量\t描述\n");for(i=0;i<m;i++)printf("%-4d\t%-8s\t%-8.2lf\t%-6d\t%-s\n",thing_chu[i].id,thing_chu[i].name,thing_chu[i].price,thing_chu[i].exist,thing_chu[i].desc);printf("========================================================================================================================\n");}
//显示所拥有角色信息
void show_player(mn1)
{int i;printf("========================================================================================================================\n");printf("编号    \t角色        \t密码        \t金币        \t点券\n");if(mn1<5)printf("%-10d\t%-10s\t%-10s\t%-10.2lf\t%-10.2lf\n",people_chu[mn1].id,people_chu[mn1].name,people_chu[mn1].password,people_chu[mn1].money,people_chu[mn1].turemoney);else{   for(i=0;i<n;i++)printf("%-10d\t%-10s\t%-10s\t%-10.2lf\t%-10.2lf\n",people_chu[i].id,people_chu[i].name,people_chu[i].password,people_chu[i].money,people_chu[i].turemoney);}printf("========================================================================================================================\n");}
//显示背包信息
void show_bag(int player_id)
{int i=player_id;int j;printf("========================================================================================================================\n");printf("角色编号\t道具总数量\t最大容量\n");printf("%-10d\t%-10d\t%-10d\n",people_chu[i].bag.playid,people_chu[i].bag.count,people_chu[i].bag.max);printf("========================================================================================================================\n");printf("拥有道具\t道具数量\t描述\n");for(j=0;j<people_chu[i].bag.count;j++){printf("%-10s\t%-4d\t%-s\n",people_chu[i].bag.things[j].name,people_chu[i].bag.things[j].exist,people_chu[i].bag.things[j].desc);printf("========================================================================================================================\n");}}
//创建账号
void chuanjian()
{void menu1();char userName[25];char passWord[25];getchar();printf("用户名:");gets(userName);printf("密码:");gets(passWord);n++;printf("创建成功!\n");people_chu[n-1].id=100+n;strcpy(people_chu[n-1].name,userName);strcpy(people_chu[n-1].password,passWord);people_chu[n-1].money=0;people_chu[n-1].turemoney=0;menu1();}//登录账号
void denglu()
{int mn=-1;int i;void menu1();int login(char user_Name[],char pass_Word[]);char userName[20];char passWord[20];getchar();printf("用户名:");gets(userName);printf("密码:");gets(passWord);for(i=0;i<n;i++){if((strcmp(userName,people_chu[i].name)==0)&&(strcmp(passWord,people_chu[i].password)==0)){mn++;if(mn>=0){printf("---------------------登录成功--------------------------\n");if(n>=6){printf("系统送您5个角色账号,请注意查收!\n");menu2(i);}elsemenu2(i);}}}if(mn==-1){printf("------------------用户名或密码错误---------------------\n");menu1();}}//购买道具函数
void buy_thing(int player_id)
{int i;int thing_id;show_thing();printf("请选择您想要购买的道具编号:");scanf("%d",&thing_id);for(i=0;i<m;i++){if(i+1==thing_id){if(people_chu[player_id].money<thing_chu[i].price)printf("金币不足!无法购买,请赚取足够金币再来!\n");else if((people_chu[player_id].bag.max-people_chu[player_id].bag.count)==0)printf("背包空间不足!无法购买,请扩展背包后再来!\n");else if(thing_chu[i].exist==0)printf("商城库存不足!无法购买该道具!\n");else{printf("恭喜你,成功购买%s!\n",thing_chu[i].name);people_chu[player_id].money=people_chu[player_id].money-thing_chu[i].price;people_chu[player_id].bag.count++;thing_chu[i].exist--;strcpy(people_chu[player_id].bag.things[people_chu[player_id].bag.count-1].name,thing_chu[i].name);people_chu[player_id].bag.things[people_chu[player_id].bag.count-1].exist++;strcpy(people_chu[player_id].bag.things[people_chu[player_id].bag.count-1].desc,thing_chu[i].desc);}}}
}//背包扩展
void bag_add(int player_id)
{if(people_chu[player_id].turemoney<p)printf("点券不足!无法扩展背包!\n");else if(people_chu[player_id].bag.max>q)printf("背包已到达最大容量!无法扩容!\n");else{printf("恭喜您!背包扩容成功!\n");people_chu[player_id].turemoney-=p;people_chu[player_id].bag.max++;printf("当前背包容量为%d\n",people_chu[player_id].bag.max);}
}
//菜单一
void menu1()
{int mn;int mingling;printf("====================================================\n");printf("=                  1.账号登录                      =\n");printf("=                                                  =\n");printf("=                  2.创建账号                      =\n");printf("====================================================\n");printf("请选择操作:");scanf("%d",&mingling);if(mingling==1){denglu();}else if(mingling==2)chuanjian();else{printf("输入命令不合法!请重新输入!\n");menu1();}}//菜单二
void menu2(int mn2)
{void gameover();int mingling;while(1){printf("====================================================\n");printf("=                  1.账号信息                      =\n");printf("=                  2.个人背包                      =\n");printf("=                  3.商城                          =\n");printf("=                  4.购买道具                      =\n");printf("=                  5.背包扩容                      =\n");printf("=                  6.切换账号                      =\n");printf("=                  7.退出游戏                      =\n");printf("====================================================\n");printf("请输入命令:\n");scanf("%d",&mingling);switch(mingling){case 1 :{show_player(mn2);system("pause");break;}case 2 :{show_bag(mn2);system("pause");break;}case 3 :{show_thing();system("pause");break;}case 4 :{buy_thing(mn2);system("pause");break;}case 5 :{bag_add(mn2);system("pause");break;}case 6 :{menu1();}case 7 :{gameover();break;}default :{printf("错误命令!请重新选择\n");break;}}}}//游戏结束函数
void gameover()
{printf("============================================================================\n");printf("=============================GAME      OVER ================================\n");printf("============================================================================\n");exit(0);}//主函数
void main()
{menu1();}

运行部分图





执行文件

链接:https://pan.baidu.com/s/1ts-dG8e2HgQlm3CBGNRp6Q
提取码:0tme

谢谢大家!

C语言实现背包与商城的小项目相关推荐

  1. C 语言快速入门,21 个小项目足矣!「不走弯路就是捷径」

    C 语言作为大学理工科专业的必修,是很多同学走进编程世界的第一课.那么怎样才能更好的入门 C 语言呢? 下面整理了 21 个 C 语言练手项目,从基础语法开始,逐步深入,通过一个个练手项目,让你轻松驰 ...

  2. C语言--师生信息管理系统(第一次小项目)

    流程目录 一.题目 二.分析题目 三.构思搭建框架 四.封装各个功能模块 五.运行调试 文章目录 文章目录 前言及要求 一.分析设计框架 二.搭建框架.封装功能模块 1.总体思路以及引入库 2.Mak ...

  3. go语言面向对象 练手小项目

    学习一门语言,最重要的就是动手,一个项目的代码写三遍,看起来笨的方法,实际上也是最快的方法. go语言的第一个练手小项目: 家庭收支记录软件的编写: 1.项目需求说明 模拟现实基于文本界面的<家 ...

  4. 云开发制作二手商城微信小程序

    从零到有云开发制作二手商城微信小程序 步入大三,和几个小伙伴用三周时间一起制作了一个小程序. 我们刚开始尝试了微信JS前端+JAVA后台的方法,但是由于缺少前端后台传数据的知识,最终选择了云开发的方式 ...

  5. 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节

    C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...

  6. 如何保留5个有效数字输出c不4舍5入_10 个C语言课设小项目拿走不谢~

    序言 C 语言是大多数人的编程入门语言,但很多初学者在学习的过程中难免会出现一些迷茫,比如:不知道 C 语言可以开发哪些项目,可以应用在哪些实际的开发中-- 今天小编收集了 10 个 C 语言练手项目 ...

  7. c语言程序 实现简单计算器功能,C语言实现简单计算器小项目

    昨天刚安装上devc++,半夜想着练练C语言吧 于是就看到实验楼有一个计算器的项目 之前做过一次,这次写的主要是思路 首先我们先从原理思考jia,实现简单的计算器就要具备加减乘除这些,看普通的计算器也 ...

  8. 初学 C 语言没有项目练手?这 20 个小项目拿走不谢~

    C 语言是大多数人的编程入门语言,但很多初学者在学习的过程中难免会出现一些迷茫,比如:不知道 C 语言可以开发哪些项目,可以应用在哪些实际的开发中-- 今天我们收集了 20 个 C 语言练手项目,提供 ...

  9. c语言为什么要建项目,一个C语言小项目为什么都说牛逼

    原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...

最新文章

  1. win7变成xp风格了怎么改回_揭秘:干掉了win7!为何win10屡被吐槽它却“永世留芳”?...
  2. android listview item 圆角,ListView圆角 实现方法(一)
  3. kettle中java组件_kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
  4. [NOI Online 2022 提高组] 丹钓战(单调栈 + 树状数组 / 主席树)
  5. 《scikit-learn》数据预处理与特征工程(三)特征选择
  6. JAVA 一个或多个空格分割字符串
  7. glob在php中的意思,PHP函数glob介绍
  8. 网页爬虫,HttpClient+Jericho HTML Parser 实现网页的抓取
  9. 洛谷P1141 01迷宫
  10. 游戏开发之动态创建对象及构造函数、析构函数的执行(C++基础)
  11. iOS的5种图片缩略技术以及性能探讨
  12. [渝粤教育] 泉州师范学院 弦管传奇 古乐南音 参考 资料
  13. 一批工业机械网站交换友情链接
  14. Chrome内核浏览器离线加装扩展的方法 IE Tab_v11.2.1.1
  15. Typora 段落如何快速首行缩进两个字符
  16. 小计:reducer 到底是什么,白话理解
  17. 数据库学习纪要(十二):SQL Sever介绍-4
  18. boost::geometry::ever_circling_iterator用法的测试程序
  19. 目测优衣库董事长只能听到赞扬的声音:3星|《经营者养成笔记》
  20. JavaScript求最大的岛屿面积

热门文章

  1. 机电团队怎么使用软件系统快速实施 部署
  2. 惠普触控板使用指南_惠普笔记本关闭触摸板【操作思路】
  3. JavaScript 事件(冒泡捕获)处理模型
  4. dlib重新训练dlib_face_recognition_resnet_model_v1.dat
  5. 公共数据库介绍~世界银行World Bank
  6. 书单 | 测试工程师必读经典好书,你读过几本?
  7. jQuery和CSS3超酷二级下拉菜单插件
  8. 阿里云大数据工具,让海底捞更懂你
  9. 小笨狼的LLDB技巧:chisel
  10. python画xy轴_python画双y轴图像的示例代码