社区讨论

求助!自制c++小游戏有问题

灌水区参与者 7已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@lo8mc7c2
此快照首次捕获于
2023/10/27 20:57
2 年前
此快照最后确认于
2023/10/27 20:57
2 年前
查看原帖
求助!! 哪个大佬帮我修一下代码!
CPP
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int a[1000],n,lis[1000],ll;
bool a1[1000];
void print(string a) {
	int b=a.size();
	for(int i=0; i<b; i++) {
		if(a[i]!='.') {
			cout<<a[i];
			Sleep(20);
			continue;
		}
		cout<<a[i];
		Sleep(7);
	}
	cout<<endl;
	while(!GetAsyncKeyState(VK_SPACE)) {
		Sleep(0.1);
	}
	Sleep(100);
}
void wen(string a) {
	int b=a.size();
	for(int i=0; i<b; i++) {
		if(a[i]!='.') {
			cout<<a[i];
			Sleep(20);
			continue;
		}
		cout<<a[i];
		Sleep(7);
	}
	cout<<endl;
}
void q() {
	system("cls");
}
bool bao(int t){
	for(int i=0;i<ll;i++){
		if(t-1==lis[i]){
			return 1;
		}
	}
	return 0;
}
int main() {
	print("曼德拉记录---------0.1 Beta");
	print("在这个世界里,你将扮演两种角色:伪人与人类");
	print("注:目前只是测试版..");
	print("按空格开始...");
	q();
	wen("请输入玩家个数(目前只有2~5人模式)");
	cin>>n;
	while(n<3) {
		wen("人数不够!重新输入");
		cin>>n;
	}
	srand(time(0));
	if(n<=5) {
		int sum=1;
		srand(time(0));
		int ran=((rand()%n+1)*rand()%5)%n+1,la=rand()%n+1;
		a[ran-1]=1145;
		cout<<"你是"<<la<<"号玩家"<<endl;
		if(la-1==ran-1) {
			cout<<"你的身份:伪人"<<endl;
			lis[ll]=la-1;
			++ll;
			while(!GetAsyncKeyState(VK_SPACE)) {
				Sleep(0.1);
			}
		} else {
			cout<<"你的身份:人类"<<endl;
			while(!GetAsyncKeyState(VK_SPACE)) {
				Sleep(0.1);
			}
		}
		q();
		int p[1000];
		int x;
		while(1) {
			memset(p,0,n+1);
			cout<<"第";
			cout<<sum;
			print("天...");
			q();
			for(int i=0; i<n; i++) {
				if(a1[i]==0) {
					cout<<"玩家"<<i+1<<"的状态:存活"<<endl;
				} else {
					cout<<"玩家"<<i+1<<"的状态:死亡";
					if(a[i]==1145) {
						wen(",是个伪人!!");
					} else {
						wen(",是个人类!");
					}
				}
			}
			if(sum>1) {
				bool re=0;
				for(int i=0; i<n; i++) {
					if(a1[i]==1) {
						re=1;
						cout<<i+1;
						print("号玩家死亡!!");
					}
				}
				if(!re) {
					print("平安夜...");
				}
				print("开始投票!!!");
				for(int i=0; i<n; i++) {
					if(i!=la-1&&a1[i]==0) {
						srand(time(0));
						x=rand()%n+1;
						cout<<i+1<<"号玩家投了"<<x<<"号!"<<endl;
						p[x-1]+=1;
						Sleep(1000);
					} else if(i==la-1&&a1[i]==0) {
						int xuan;
						wen("你选择投:");
						cin>>xuan;
						p[xuan-1]+=1;
						while(!GetAsyncKeyState(VK_SPACE)) {
							Sleep(0.1);
						}
					}
				}
				int max=1,xu=0;
				for(int i=0; i<n; i++) {
					if(p[i]>max) {
						max=p[i];
						xu=i;
					}
				}
				if(max!=1) {
					cout<<xu+1;
					print("号玩家已出局!!");
					a1[xu]=1;
					print("他的身份:");
					if(a[xu]==1145) {
						print("伪人!!");
					} else {
						print("人类!?");
					}
					system("cls");
				}
				
		
		
			}
			print("天黑了...");
			if(a[la-1]==1145) {
				int xua;
				wen("你来了...选择你的猎物");
				cin>>xua;
				while(xua==la) {
					system("cls");
					wen("不可以选自己!!!");
					cin>>xua;
				}
				a1[xua-1]=1;
				print("他被你杀了!!");
				lis[ll]=xua-1;
				++ll;
				wen("选择要变身的人");
				cin>>xua;
				while(!bao(xua)||a1[xua-1]){
					wen("不能变成他!!");
					cin>>xua;
				}
				print("变身成功!");
				system("cls");
			}
		sum++;
		}
	}
	return 0;
}


回复

10 条回复,欢迎继续交流。

正在加载回复...