DEVC++伪3D小游戏丧尸城市

//类型:开放世界/丧尸/生存
//地图大小:18*18
//实际大小(除去建筑):318
#include<algorithm>
#include<fstream>
#include<iostream>
#include<stdio.h>
#include<cstdio>
#include<iostream>
#include<windows.h>
#include<conio.h>
#include <time.h>
#include <stdlib.h>
#include<bits/stdc++.h>
#include<cstdio>
#include<algorithm>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) //必要的,要背下来
using namespace std;
//1: 竖的边界 2: 横的边界 3:墙
//was移动,空格攻击,f换弹,q吃东西(必须在安全屋),s饮水(必须在安全屋),v踢腿(和丧尸在一起时)
//视角:第一人称伪3D
int go=1;//移动判定
int cmoounity[20][20];
int first_food;
int first_water;
bool biu;//判断是否开枪
bool kick;//判断是否踢腿
int kill;
int zd;
int food;
int water;
int x,y;
int dx,dy;
int fx=1;
int x_what(int x) {//取随机数
	srand((unsigned)time(NULL));
	return( rand() % x);
}
int building_build() {
	for(int i=0; i<20; i++) {
		for(int j=0; j<20; j++) {
			if(j==0||j==19) {
				cmoounity[i][j]=1;
			}
			if(i==0||i==19) {
				cmoounity[i][j]=2;
			}
		}
	}
	for(int i=14; i<20; i++) {
		cmoounity[13][i]=3;
	}
}
int player_and_AI() {
	dx=x_what(11);
	dy=x_what(18);
	dx++;
	dy++;
	x=18;
	y=18;
	food=200;
	water=200;
}
int open() {
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
	cout<<"_____________________"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|    by:用爱发电    |"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|___________________|"<<endl;
	Sleep(2000);
	system("cls");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
	cout<<"_____________________"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|    by:黑客小C     |"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|___________________|"<<endl;
	Sleep(2000);
	system("cls");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
	cout<<"_____________________"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|      丧尸城市     |"<<endl;
	cout<<"|by:用爱发电&黑客小C|"<<endl;
	cout<<"|    任意键开始     |"<<endl;
	cout<<"|                   |"<<endl;
	cout<<"|___________________|"<<endl;
	while(!kbhit()) {

	}
	system("cls");
	fx=1;
}
int out_map() {
	if(kick==false&&biu==false) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"_____________________"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  *************";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*** ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|  **************  ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|___________________|"<<endl;
	} else if(kick==true) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"_____________________"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|___________________|"<<endl;
	} else if(biu==true) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"_____________________"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************   |"<<endl;
		cout<<"|  **************";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"***";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|  **************  ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|___________________|"<<endl;
	}
}
int out_AI() {
	if(kick==false&&biu==false) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"_____________________"<<endl;
		cout<<"|        ***        |"<<endl;
		cout<<"|        ***        |"<<endl;
		cout<<"|       *****       |"<<endl;
		cout<<"|         *     ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*** ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|        * *       ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|___________________|"<<endl;
	} else if(kick==true) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"_____________________"<<endl;
		cout<<"|        ***        |"<<endl;
		cout<<"|        ***        |"<<endl;
		cout<<"|       *****       |"<<endl;
		cout<<"|         ***       |"<<endl;
		cout<<"|        * ***      |"<<endl;
		cout<<"|___________________|"<<endl;
	} else if(biu==true) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"_____________________"<<endl;
		cout<<"|        ***        |"<<endl;
		cout<<"|        ***        |"<<endl;
		cout<<"|       *****       |"<<endl;
		cout<<"|         *     *";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"***";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|        * *       ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|___________________|"<<endl;
	}
}
int out_no() {
	if(kick==false&&biu==false) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"_____________________"<<endl;
		cout<<"|                   |"<<endl;
		cout<<"|                   |"<<endl;
		cout<<"|                   |"<<endl;
		cout<<"|               ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*** ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|                  ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|___________________|"<<endl;
	}
	if(kick==true) {
		cout<<"_____________________"<<endl;
		cout<<"|                   |"<<endl;
		cout<<"|                   |"<<endl;
		cout<<"|        **         |"<<endl;
		cout<<"|         **        |"<<endl;
		cout<<"|          **       |"<<endl;
		cout<<"|___________________|"<<endl;
	} else if(biu==true) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"_____________________"<<endl;
		cout<<"|                   |"<<endl;
		cout<<"|                   |"<<endl;
		cout<<"|                   |"<<endl;
		cout<<"|               *";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"***";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|                  ";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*";
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"|"<<endl;
		cout<<"|___________________|"<<endl;
	}
}
int sw() {
	//丧尸死亡
	dx=x_what(11);
	dy=x_what(18);
	dx++;
	dy++;
	kill++;
}
int play() {
	char cz;
	biu=false;
	kick=false;
	if(kbhit()) {
		cz=getch();
		if(cz=='a') {
			if(fx>1) {
				fx--;
			} else {
				fx=4;
			}
		}
		if(cz=='d') {
			if(fx<4) {
				fx++;
			} else {
				fx=1;
			}
		}
		if(cz=='w') {
			if(fx==1&&cmoounity[y][x-1]==0) {
				x--;
			}
			if(fx==2&&cmoounity[y-1][x]==0) {
				y--;
			}
			if(fx==3&&cmoounity[y][x+1]==0) {
				x++;
			}
			if(fx==4&&cmoounity[y+1][x]==0) {
				y++;
			}
		}
		if(cz==' '&&zd>0) {
			biu=true;
			zd--;
			if(fx==1&&y==dy&&x>dx) {
				sw();
			}
			if(fx==2&&y<dy&&x==dx) {
				sw();
			}
			if(fx==3&&y==dy&&x<dx) {
				sw();
			}
			if(fx==4&&y>dy&&x==dx) {
				sw();
			}
		}
		if(cz=='f') {
			zd=20;
		}
		if(x>14&&cz=='q'&&food<200&&first_food>=1000) {
			food+=31;
			first_food-=1000;
		}
		if(x>14&&cz=='s'&&water<200&&first_water>=500) {
			water+=11;
			first_water-=500;
		}
		if(cz=='v') {
			kick=true;
			if(x==dx&&y==dy) {
				sw();
			}
			food-=2;
		}
	}
}
int AI() {
	int dfx;
	if(go%8!=0) {
		return 0;
	}
	dfx=x_what(4);
	dfx++;
	if(dfx==1&&cmoounity[dy][dx-1]==0) {
		dx--;
	}
	if(dfx==2&&cmoounity[dy+1][dx]==0) {
		dy++;
	}
	if(dfx==3&&cmoounity[dy][dx+1]==0) {
		dx++;
	}
	if(dfx==4&&cmoounity[dy-1][dx]==0) {
		dy--;
	}
}
int before() {
	system("cls");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
	cout<<"购买食物(克):";
	cin>>first_food;
	cout<<"购买水(毫升):";
	cin>>first_water;
	system("cls");
}
int out() {
	int yn_no=0;
	system("cls");
	cout<<"击杀丧尸数量:"<<kill;
	cout<<"饥饿:"<<food<<"口渴"<<water<<endl;
	cout<<"子弹:"<<zd<<"    ";
	if(fx==1) {
		cout<<"方向:西";
	}
	if(fx==2) {
		cout<<"方向:北";
	}
	if(fx==3) {
		cout<<"方向:东";
	}
	if(fx==4) {
		cout<<"方向:南";
	}
	cout<<endl;
	cout<<"玩家"<<x<<","<<y<<"   ";
	cout<<"附近丧尸"<<dx<<","<<dy<<endl;
	for(int i=0; i<=3; i++) {
		if(fx==1&&cmoounity[y][x-i]!=0) {
			out_map();
			yn_no=1;
			break;
		} else if(fx==2&&cmoounity[y-i][x]!=0) {
			out_map();
			yn_no=1;
			break;
		} else if(fx==3&&cmoounity[y][x+i]!=0) {
			out_map();
			yn_no=1;
			break;
		} else if(fx==4&&cmoounity[y+i][x]!=0) {
			out_map();
			yn_no=1;
			break;
		} else if(fx==1&&y==dy&&x==dx+i) {
			out_AI();
			yn_no=1;
			break;
		} else if(fx==2&&x==dx&&y==dy-i) {
			out_AI();
			yn_no=1;
			break;
		} else if(fx==3&&y==dy&&x==dx-i) {
			out_AI();
			yn_no=1;
			break;
		} else if(fx==4&&x==dx&&y==dy+i) {
			out_AI();
			yn_no=1;
			break;
		}
	}
	if(yn_no==0) {
		out_no();
	}
}
int main() {
	open();
	building_build();
	player_and_AI();
	before();
	while(true) {
		out();
		play();
		AI();
		Sleep(10);
		go++;
		if(dx==x&&dy==y&&go%20==0) {
			system("cls");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
			cout<<"_____________________"<<endl;
			cout<<"|                   |"<<endl;
			cout<<"|     game over     |"<<endl;
			cout<<"|                   |"<<endl;
			cout<<"|               ";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
			cout<<"*** ";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
			cout<<"|"<<endl;
			cout<<"|                  ";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
			cout<<"*";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
			cout<<"|"<<endl;
			cout<<"|___________________|"<<endl;
			Sleep(2000);
			return 0;
		}
		food--;
		water--;
		if(food<=0||water<=0) {
			system("cls");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
			cout<<"_____________________"<<endl;
			cout<<"|                   |"<<endl;
			cout<<"|     game over     |"<<endl;
			cout<<"|                   |"<<endl;
			cout<<"|               ";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
			cout<<"*** ";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
			cout<<"|"<<endl;
			cout<<"|                  ";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
			cout<<"*";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
			cout<<"|"<<endl;
			cout<<"|___________________|"<<endl;
			Sleep(2000);
			return 0;
		}
	}
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C++文字游戏丧尸的例子,其中包括了基本的游戏流程和玩家操作: ```c++ #include <iostream> #include <string> #include <cstdlib> #include <ctime> using namespace std; int main() { srand(time(0)); // 用当前时间初始化随机数生成器 // 游戏开始 cout << "欢迎来到丧尸围城!" << endl; cout << "你是一名幸存者,现在你需要在这个城市中生存下去。" << endl; cout << "你需要不断地寻找食物、水和药品,同时躲避丧尸的追击。" << endl; cout << "你可以通过输入指令来进行操作。" << endl; cout << "输入help查看帮助。" << endl; // 玩家属性 int health = 100; // 生命值 int hunger = 0; // 饥饿值 int thirst = 0; // 口渴值 int ammo = 0; // 弹药数量 // 游戏循环 while (health > 0) { // 显示玩家属性 cout << "生命值:" << health << endl; cout << "饥饿值:" << hunger << endl; cout << "口渴值:" << thirst << endl; cout << "弹药数量:" << ammo << endl; // 玩家输入指令 string command; cout << "请输入指令:"; cin >> command; // 处理指令 if (command == "help") { cout << "可用指令:" << endl; cout << "look - 查看周围环境" << endl; cout << "eat - 吃东西" << endl; cout << "drink - 喝水" << endl; cout << "shoot - 开枪" << endl; cout << "run - 逃跑" << endl; cout << "help - 查看帮助" << endl; } else if (command == "look") { // 随机生成周围环境 int env = rand() % 3; if (env == 0) { cout << "你发现了一些食物。" << endl; } else if (env == 1) { cout << "你发现了一些水。" << endl; } else { cout << "你没有发现任何有用的东西。" << endl; } } else if (command == "eat") { if (hunger == 0) { cout << "你没有饥饿感,不需要吃东西。" << endl; } else { cout << "你吃了一些食物,饥饿值减少。" << endl; hunger--; } } else if (command == "drink") { if (thirst == 0) { cout << "你没有口渴感,不需要喝水。" << endl; } else { cout << "你喝了一些水,口渴值减少。" << endl; thirst--; } } else if (command == "shoot") { if (ammo == 0) { cout << "你没有弹药了。" << endl; } else { // 随机判断是否命中 int hit = rand() % 2; if (hit == 0) { cout << "你没有命中丧尸。" << endl; } else { cout << "你击中了一只丧尸。" << endl; } ammo--; } } else if (command == "run") { // 随机判断是否逃脱成功 int escape = rand() % 2; if (escape == 0) { cout << "你没有成功逃脱。" << endl; } else { cout << "你成功逃脱了。" << endl; break; } } else { cout << "无效的指令,请重新输入。" << endl; } // 更新玩家属性 hunger++; thirst++; if (hunger > 10) { health--; cout << "你因为饥饿而失去了一点生命值。" << endl; hunger = 10; } if (thirst > 10) { health--; cout << "你因为口渴而失去了一点生命值。" << endl; thirst = 10; } } // 游戏结束 cout << "你死了,游戏结束。" << endl; return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值