微电子2班 Group 10 C++ 小组汇报

1.类飞行棋游戏 :

要求:尝试应用enum枚举类型定义游戏的状态,包括WIN,LOSE和CONTINUE三种状态,同时应用用continue和break语句设计类似飞行棋游戏:自己定义一个规则,比如:设定目标位置是20,起始位置是0,若投掷的骰子点数+当前位置>目标位置,就进行下一次循环;否则,当前位置就改为当前位置+点数;若点数+当前位置==目标位置,就退出循环,游戏结束;游戏状态是CONTINUE,则继续游戏。点数随机获取。当游戏状态是WIN时,输出“你赢了”,游戏状态是LOSE时,输出“你输了”。

 实现代码1:

#include <iostream>
#include <ctime>
#include <windows.h>
using namespace std;

enum GameState {
	WIN,
	LOSE,
	CONTINUE
};
int main()
{
	GameState State = CONTINUE;
	const int targetPosition = 20; // 目标位置
	int currentPosition = 0; // 当前位置
	int i = 1; //游戏当前进行次数(最多循环四次)
	srand(time(0)); // 设置随机数
	cout << "开始游戏,游戏最多进行4轮" << endl;
	cout << "当前轮数:" << i << endl;
	Sleep(2000);
	cout << endl;
	cout << "当前位置:0" << endl;
	cout << endl;
	Sleep(2000);
	while (i < 5)
	{
		int diceRoll = rand() % 6 + 1; // 掷骰子,生成1到6之间的随机数
		cout << "骰子点数:" << diceRoll << endl;

		if (diceRoll + currentPosition > targetPosition)
		{
			// 若点数+当前位置超过目标位置,则进行下一次循环
			currentPosition = currentPosition + diceRoll - 20;
			i++;
			cout << "当前位置:" << currentPosition << "(超出20,未达到目标点,自动-20)\n             (游戏继续)" << endl;
			cout << "当前轮数:" << i << endl;
			cout << endl;
			State = LOSE;
			continue;
		}
		else
		{
			currentPosition += diceRoll; // 当前位置改为当前位置+点数
			cout << "当前位置:" << currentPosition << endl;
			cout << endl;
			State = CONTINUE;
			Sleep(1500);

			if (currentPosition == targetPosition)
			{
				// 若点数+当前位置等于目标位置,游戏结束,退出循环
				cout << "当前位置:20" << endl;
				State = WIN;
				break;
			}
		}
	}

	cout << "游戏结束!" << endl;
	cout << "最终位置:" << currentPosition << endl;
	cout << endl;
	if (WIN == State)
		cout << "您在第" << i << "轮达到目标位置,你赢了!" << endl;
	else if (LOSE == State)
		cout << "次数用尽仍未达到目标,你输了!" << endl;

	return 0;
}

基本思路为首先在while循环开始前srand(time(0)) 设置随机种子,接着开始循环,用rand()%+1模拟掷骰子,设置开始位置为0,目标位置为20。不断掷骰子,一旦位置超过了20,立即-20继续循环,同时将游戏轮数+1。当游戏在4轮内达到目标位置20则获胜,反之失败。

 实现代码2:

#include <iostream>
#include <ctime>
#include <cstdlib> 
using namespace std;
int main(){
	enum State{Win,Lose,Continue};
	State aState=Win;
	int aim=20;//设定
	int start=0;
	    for (;;srand(time(0))){//使种子不同
		     int num=rand()%6+1;//随机数  
			if(num+start>aim){
	        	aState=Lose;
				start=0;//新一局初始化起点 
				cout<<"你输了"<<endl; 
				continue;//大循环 
			} 
		    else{
		    	start+=num;
		    	if(num+start==aim){
		    		aState=Win;
					cout<<"你赢了"<<endl; 
					break;
				}
				if(start+num<aim){
					aState=Continue;
				} 
			}
		}; 
	return 0; 
}

实现代码3:

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int main()
{
	enum State{Continue,Win,Lose
	};
	State Pstate=Continue;
	cout<<"欢迎来到飞行棋游戏!"<<endl<<"您的初始位置为0,目标位置为20。您一共只有六次机会,请开始投掷骰子。"<<endl;
	int present=0;
	srand(static_cast<unsigned int>(time(0)));
	for(int i=1;i<=6;i++)
	{ 
		int origin=rand()%6+1;
		present+=origin;
		cout<<"您的当前位置是"<<present<<endl; 
		if(present>20)
		{
			Pstate=Continue;
			cout<<"您已超出目标位置,请您重新投掷骰子。"<<endl;
			present=present-origin; 
			continue; 
		}
		if(present==20)
		{
			Pstate=Win;
			cout<<"游戏结束,您赢了!"<<endl;
			break;
		}
	}
	if(present<20)
	{
		Pstate=Lose;
		cout<<"游戏结束,您输了!"<<endl;
	}
	return 0; 
}

我们一位组员用到了#include<bits/stdc++.h>头文件

#include<bits/stdc++.h>是一个非标准的头文件,它常用于竞赛编程或快速原型开发时,方便地包含了标准库中的大部分常用头文件。

<bits/stdc++.h>头文件实际上包含了以下常用的标准头文件:(下面有些看看就行)

  1. <iostream>:输入输出流库,用于标准输入输出。
  2. <iomanip>:输入输出格式库,用于流操作符的设置。
  3. <fstream>:文件输入输出库,用于文件读写操作。
  4. <cstdio>:C风格输入输出库,提供了与C语言类似的输入输出函数。
  5. <cstdlib>:C标准库,提供了一些通用的函数和类型定义。
  6. <cmath>:数学库,提供了各种数学函数。
  7. <algorithm>:算法库,提供了一些常用的算法函数。
  8. <vector>:向量容器库,提供了向量操作相关的函数和类。
  9. <list>:链表容器库,提供了链表操作相关的函数和类。
  10. <deque>:双端队列容器库,提供了双端队列操作相关的函数和类。
  11. <queue>:队列容器库,提供了队列操作相关的函数和类。
  12. <stack>:栈容器库,提供了栈操作相关的函数和类。
  13. <set>:集合容器库ÿ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值