C语言程序设计:综合设计实验一(设计一个文字游戏)

1.实验要求

(1) 设计一个文字游戏,通过玩家输入命令或者选择某种操作,推进剧情的发展,要求程序有一定的可玩性。

(2) 在没有学习文件之前,用字符串数组保存剧情文字信息;

(3) 在游戏中设计随机元素,用户同样的选择,可以得到不同的结果。

(4) 根据自己能力完成上面的练习后,填写实验报告,将源文件和实验报告,命名为“学号-姓名-实验X”,比如:1740611111-张三-实验1,上交到智慧树。(注:源码以截图的方式上交。)

2.设计思路

我想设计一个炒股软件,简单的买卖~~~~

3.源码

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<string.h> #define BUF_size 5 typedef struct _shares
{
int num;//股票代码code
int first_price;//买入价格
int buy;//买入数量
int last_price;//涨跌后价格
}shares; shares items[BUF_size]; void Initialization();
void Make();
void Event(); int round = 1;
int gameon = 1;
int gameoff = 0;
int money = 1500; int main()
{
while (gameon)
{
Initialization();
Make();
Event();
//gameon = 0;
round++;
}
return 0;
} void Initialization()
{
if (money <= 0) {
printf("\n===================[/Lose]=========================\n");
printf("!!!很遗憾,你已经破产了\n", money);
printf("是否重新开始游戏【输入1重开,输入0则为退出】\n", money);
printf("===================[Lose/]=========================\n\n");
scanf_s("%d", &gameoff);
if (gameoff) {
money = 1500;
gameoff = 0;
}
else {
exit(0);
}
}
printf("=================[Round.%.2d]=======================\n", round);
printf("你现在有[%d]股\n", money);
} void Make()
{
int a = 1;
srand((unsigned)time(NULL)); int code = rand() % 40000 + 10000;
int first_price = 1 + rand() % 10;
int increasing = rand() % 51;
int falling = rand() % 51; int put = 0;
int buymoney; while(a == 1)
{
printf("====================[Shares]======================\n");
printf("现在有一支代码为[%d]的股票\n", code);
printf("当前价格为:[%d]元\n", first_price);
printf("上涨概率为[%d%%]\n", increasing);
printf("下跌概率为[%d%%]\n", falling);
printf("是否进行买入?\n");
printf("[输入1为买入,输入其他则为放弃]\n");
printf("==================================================\n"); scanf_s("%d", &put);
if (put == 1)
{
printf("===================[Buy]==========================\n");
printf("需要购入多少股?\n");
printf("==================================================\n");
scanf_s("%d", &buymoney);
if (buymoney > money)
{
printf("===============[Failded to buy]===================\n");
printf("买入失败,你当前只拥有[%d]股,请不要超过该数量\n\n", money);
}
else {
money -=buymoney;
items->buy = buymoney;
items->num = code;
items->first_price = first_price;
printf("==============[Buy Successfully]==================\n");
printf("买入[%d]股成功,当前剩余[%d]股\n\n", buymoney, money);
}
} //a = rand() % 2;
a = 0;
}
} void Event()
{
srand((unsigned)time(NULL));
int a = rand() % 2;//0跌1升
int income = 0;
int difference = 0;
if (items->num != 0)
{
if (a == 1)
{
items->last_price = items->first_price + rand() % 11;
difference = items->last_price - items->first_price;
income = difference * items->buy;
money += income;
printf("===================[Rise]=========================\n");
printf("你购买的代码为[%d]的股票,上涨啦\n", items->num);
printf("买入时价格为[%d]元,当前价格为[%d]元\n", items->first_price, items->last_price);
printf("相较于买入时上涨了[%d元],一共买入[%d]股\n", difference, items->buy);
printf("你获得了[%d]股,当前共有[%d]股\n", income, money);
printf("==================================================\n\n");
}
else {
items->last_price = 1 + rand() % items->first_price;
difference = items->first_price - items->last_price;
income = difference * items->buy;
money -= income;
printf("===================[Fall]=========================\n");
printf("你购买的代码为[%d]的股票,下跌啦\n", items->num);
printf("买入时价格为[%d]元,当前价格为[%d]元\n", items->first_price, items->last_price);
printf("相较于买入时下跌了[%d元],一共买入[%d]股\n", abs(difference), items->buy);
printf("你损失了[%d]股,当前还剩[%d]股\n", abs(income), money);
printf("==================================================\n\n");
}
}
}

4.后话

本来想用动态数组实现对买入不同的股票进行管理的,代码中埋下了好多的坑都没补上,我太懒了~~~~所以,这是一个极度精简的文字炒股游戏,enjoy it~

C语言程序设计:综合设计实验一(设计一个文字游戏)的更多相关文章

  1. 《Java语言程序设计》上机实验

    实验一   Java环境演练   [目的] ①安装并配置Java运行开发环境: ②掌握开发Java应用程序的3个步骤:编写源文件.编译源文件和运行应用程序: ③学习同时编译多个Java源文件. [内容 ...

  2. 计算机二级-C语言-程序设计题-190119记录-求出一个二维数组每一列的最小值。

    //编写一个函数:tt指向一个M行N列的二维数组,求出二维数组每列中最小的元素,并依次放入pp所指的一维数组中.二维数组中的数在主函数中赋予. //重难点:求出的是每一列的最小值,这里要注意,学会简化 ...

  3. C语言程序设计第一作业

    C语言程序设计第一作业 实验总结 (一) 1.题目:输入圆的半径,求圆周长和面积 2.流程图: 3.测试数据及运行结果: 4.实验分析: 问题1: 出现了错误 原因:是在赋值那写反了 解决方法:应该是 ...

  4. C语言程序设计课程设计自查表格

    课程设计自查表格 序号 项目 完成与否(完成打勾) 1 格式是否符合标准(缩进是否规范) 2 是否模块化设计(使用函数分解系统功能) 3 函数名否易懂(不得使用f1(int a1,int a2)这样的 ...

  5. 20155227 《Java程序设计》实验四 Android开发基础设计实验报告

    20155227 <Java程序设计>实验四 Android开发基础设计实验报告 任务一 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二 ...

  6. 20145219 《Java程序设计》实验四 Android开发基础设计实验报告

    20145219 <Java程序设计>实验四 Android开发基础设计实验报告 实验内容 安装Andriod Studio并配置软件 使用Andriod Studio软件实现Hello ...

  7. 2019春《C语言程序设计》课程设计的安排

    课程设计的安排 课前准备: 要求同学们注册码云,并登陆: 要求组长加入由老师创建的一级组织:"2019春C语言": 要求组长建立二级组织,给自己的小组取个好听的名字,并邀请本组成员 ...

  8. 20204107 孙嘉临《PYTHON程序设计》计算器设计实验二报告

    课程:<python程序设计> 班级:2041 姓名:孙嘉临 学号:20204107 实验教师:王志强 实验日期:2021年4月12日 必修/选修:公选课 ##一.实验内容 设计并完成一个 ...

  9. 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶

    <C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...

随机推荐

  1. 第02章_MySQL环境搭建

    第02章_MySQL环境搭建 1. MySQL的卸载 步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务.按键盘上的"Ctrl + Alt + Delete"组合 ...

  2. AutoHotkey

    ;注释 : #==win !==Alt  ^==Ctr  +==shift 需要注意的是不要和现有的快捷键冲突,他会代替掉原来的快捷键操作很难受的. 热指令: 比如 ::yx1::1359720840 ...

  3. Android系统编程入门系列之硬件交互——多媒体摄像头

    多媒体系列硬件 多媒体包括图片.动画.音频.视频,这些多媒体素材的采集(输入)主要依靠摄像头和麦克风等硬件设备转化为基础数据,而他们的播放渲染(输出),则需要依靠具有相关功能的编解码软件.当然随着硬件 ...

  4. x86汇编反编译到c语言之——(1)表达式求值及赋值语句

    一. 反编译一种可能的实现方式 我们的目的是将多种平台的汇编如x86,ARM,6502反编译为c语言,所以实现时先将多种汇编转化为 特定虚拟机汇编语言,然后只需要将虚拟机汇编语言反编译为c语言.其中多 ...

  5. BehaviorTree.CPP行为树BT的队列节点(三)

    Sequences(队列) 只要序列的所有子代返回SUCCESS,它便会对其进行Tick. 如果有任何子级返回FAILURE,则序列中止. 当前,该框架提供三种节点: Sequence Sequenc ...

  6. Codeforces 708E - Student's Camp(前缀和优化 dp)

    Codeforces 题目传送门 & 洛谷题目传送门 神仙 *3100,%%% 首先容易注意到 \(\forall i\in[1,m]\),第 \(i\) 行剩余的砖块一定构成一个区间,设其为 ...

  7. Codeforces 193E - Fibonacci Number(打表找规律+乱搞)

    Codeforces 题目传送门 & 洛谷题目传送门 蠢蠢的我竟然第一眼想套通项公式?然鹅显然 \(5\) 在 \(\bmod 10^{13}\) 意义下并没有二次剩余--我真是活回去了... ...

  8. DirectX12 3D 游戏开发与实战第七章内容(下)

    利用Direct3D绘制几何体(续) 学习目标 学会一种无须每帧都要刷新命令队列的渲染流程,由此来优化程序的性能 了解另外两种跟签名参数类型:根描述符和根常量 探索如何在程序中生成和绘制常见的几何体, ...

  9. RSA,DSA,ECDSA,EdDSA和Ed25519的区别

    RSA,DSA,ECDSA,EdDSA和Ed25519的区别 用过ssh的朋友都知道,ssh key的类型有很多种,比如dsa.rsa. ecdsa.ed25519等,那这么多种类型,我们要如何选择呢 ...

  10. bcftools 提取vcf(snp/indel)文件子集

    做群体变异检测后,通常会有提取子集的操作,之前没有发现bcftools有这个功能,都是自己写脚本操作,数据量一上来,速度真的是让人无语凝噎.这里记录下提取子vcf文件的用法,软件版本:bcftools ...