1. 程式人生 > 其它 >C語言程式設計:綜合設計實驗一(設計一個文字遊戲)

C語言程式設計:綜合設計實驗一(設計一個文字遊戲)

目錄

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~