C++射击小游戏爆破战争(最终版)

//不忘初心,专注枪战。
//大致剧情线:爆破->战役(保卫战->歼灭战->生化空间站救援->阻击战)->枪战  (双人模式架空) 
#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>
HWND hMainWnd;  //主窗口句柄
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) //必要的,要背下来
using namespace std;
int ms;
int yb;
int sh=0;
int dhurt=5;
int dz=0;
int bptd=1;
int boom_time;
int map_num;
int hurt;
int js;
int x,y;
int dx,dy;
int bx,by;
int bww=100;
int qfw=100;
char hero;
int dsr;
int game_map[101][101];
int x_what(int x) {//取随机数
	srand((unsigned)time(NULL));
	return( rand() % x);
}
int map_out(int x) {
	if(x==0) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);
		cout<<"*";
	} else if(x==1) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_RED);
		cout<<"*";
	} else if(x==2) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
		cout<<"*";
	} else if(x==3) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
		cout<<"*";
	} else if(x==4) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		cout<<"*";
	} else if(x==5) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE|FOREGROUND_GREEN);
		cout<<"*";
	} else if(x==6) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE|FOREGROUND_GREEN);
		cout<<"*";
	}
}
int open() {
	hero='+';
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
	cout<<"-------------------"<<endl;
	cout<<"|     黑客小C     |"<<endl;
	cout<<"-------------------"<<endl;
	Sleep(2000);
	system("cls");
	cout<<"-------------------"<<endl;
	cout<<"| 1亿码农枪战梦想 |"<<endl;
	cout<<"-------------------"<<endl;
	Sleep(2000);
	system("cls");
	cout<<"------------------"<<endl;
	cout<<"|     爆破战争    |"<<endl;
	cout<<"-------------------"<<endl;
	while(!kbhit()) {

	}
	system("cls");
}
int out1() {
	system("cls");
	cout<<"本局角色:土匪"<<endl;
	cout<<"警:"<<bww<<"匪:"<<qfw;
	if(bptd==0) {
		cout<<"距离爆炸的时间:"<<boom_time;
	}
	cout<<endl;
	for(int i=0; i<11; i++) {
		for(int j=0; j<11; j++) {
			if(i==0||i==10) {
				map_out(map_num);
			} else if(j==0||j==10) {
				map_out(map_num);
			} else if(i==x&&j==y) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);
				cout<<hero;
			} else if(i==dx&&j==dy) {
				if(sh==0) {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
					cout<<"+";
				} else {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
					cout<<"#";
				}
			} else if(i==bx&&j==by) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
				cout<<"O";
			} else if(game_map[i][j]==1) {
				map_out(map_num);
			} else {
				cout<<" ";
			}
		}
		cout<<endl;
	}
}
int out2() {
	system("cls");
	cout<<"本局角色:警察"<<endl;
	cout<<"警:"<<bww<<"匪:"<<qfw;
	if(bptd==0) {
		cout<<"距离爆炸的时间:"<<boom_time;
	}
	cout<<endl;
	for(int i=0; i<11; i++) {
		for(int j=0; j<11; j++) {
			if(i==0||i==10) {
				map_out(map_num);
			} else if(j==0||j==10) {
				map_out(map_num);
			} else if(i==dx&&j==dy) {
				if(sh==0) {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);
					cout<<"+";
				} else {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
					cout<<"#";
				}
			} else if(i==x&&j==y) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
				cout<<hero;
			} else if(i==bx&&j==by) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
				cout<<"O";
			} else if(game_map[i][j]==1) {
				map_out(map_num);
			} else {
				cout<<" ";
			}
		}
		cout<<endl;
	}
}
int out3() {
	system("cls");
	cout<<"警:"<<bww<<"匪:"<<qfw;
	if(bptd==0) {
		cout<<"距离爆炸的时间:"<<boom_time;
	}
	cout<<endl;
	for(int i=0; i<11; i++) {
		for(int j=0; j<11; j++) {
			if(i==0||i==10) {
				map_out(map_num);
			} else if(j==0||j==10) {
				map_out(map_num);
			} else if(i==dx&&j==dy) {
				if(sh==0) {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);
					cout<<"+";
				} else {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
					cout<<"#";
				}
			} else if(i==x&&j==y) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
				cout<<hero;
			} else if(i==bx&&j==by) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
				cout<<"O";
			} else if(game_map[i][j]==1) {
				map_out(map_num);
			} else {
				cout<<" ";
			}
		}
		cout<<endl;
	}
}
//隔着建筑物可打建筑物上方射建筑物后的人
//例子:
//   *-----*
//  |  ||| |
int play1() {
	char c;
	if(kbhit()) {
		c=getch();
		if(c=='w'&&x>1&&game_map[x-1][y]==0) {
			x--;
		}
		if(c=='a'&&y>1&&game_map[x][y-1]==0) {
			y--;
		}
		if(c=='s'&&x<9&&game_map[x+1][y]==0) {
			x++;
		}
		if(c=='d'&&y<9&&game_map[x][y+1]==0) {
			y++;
		}
		if (c==' ') {
			if(x==dx||y==dy) {
				bww-=hurt;
			}
		}
		if(c=='q'&&x==dx&&y==dy&&(hero=='A'||hero=='*')) {
			bww-=200;
		}
	}
}
int play2() {
	char c;
	if(kbhit()) {
		c=getch();
		if(c=='w'&&x>1&&game_map[x-1][y]==0) {
			x--;
		}
		if(c=='a'&&y>1&&game_map[x][y-1]==0) {
			y--;
		}
		if(c=='s'&&x<9&&game_map[x][y+1]==0) {
			x++;
		}
		if(c=='d'&&y<9&&game_map[x][y+1]==0) {
			y++;
		}
		if(c=='e') {
			if(x==bx&&y==by) {
				qfw=0;
			}
		}
		if (c==' ') {
			if(x==dx||y==dy) {
				qfw-=hurt;
			}
		}
		if(c=='q'&&x==dx&&y==dy&&(hero=='A'||hero=='*')) {
			qfw-=200;
		}
	}
}
int play3() {
	char c;
	if(kbhit()) {
		c=getch();
		if(c=='w'&&x>1&&game_map[x-1][y]==0) {
			x--;
		}
		if(c=='a'&&y>1&&game_map[x][y]-1==0) {
			y--;
		}
		if(c=='s'&&x<9&&game_map[x+1][y]==0) {
			x++;
		}
		if(c=='d'&&y<9&&game_map[x][y-1]==0) {
			y++;
		}
		if(c=='e') {
			if(x==bx&&y==by) {
				qfw=0;
			}
		}
		if (c==' ') {
			if(x==dx||y==dy) {
				qfw-=hurt;
			}
		}
		if(c=='i'&&dx>1&&game_map[dx-1][dy]==0) {
			dx--;
		}
		if(c=='j'&&dy>1&&game_map[dx][dy-1]==0) {
			dy--;
		}
		if(c=='k'&&dx<9&&game_map[dx+1][dy]==0) {
			dx++;
		}
		if(c=='l'&&dy<9&&game_map[dx][y+1]==0) {
			dy++;
		}
		if (c=='m') {
			if(sh==0&&x==dx||y==dy) {
				bww-=hurt;
			}
			if(sh==1&&x==dx&&y==dy)
				bww-=150;
		}
	}
}
int AI() {
	if(bww<=0||qfw<=0) {
		return 0;
	}
	if(boom_time%3!=0) {
		return 0;
	}
	if(x>dx&&dx<9&&game_map[dx+1][dy]==0) {
		dx++;
	} else if(y>dy&&dy<9&&game_map[dx][dy+1]==0) {
		dy++;
	}
	if(x<dx&&dx>1&&game_map[dx-1][dy]==0) {
		dx--;
	} else if(y<dy&&dy>1&&game_map[dx][dy-1]==0) {
		dy--;
	}
	if(dy==y||dx==x) {
		if(js==2) {
			bww-=dhurt;
			if(hero=='W') {
				bww+=(dhurt/5);
			}
		}
		if(js==1) {
			qfw-=dhurt;
			if(hero=='W') {
				qfw+=(dhurt/5);
			}
		}
	}
}
int AI2() {
	if(bww<=0||qfw<=0) {
		return 0;
	}
	if(boom_time%3!=0) {
		return 0;
	}
	if(x>dx&&dx<9&&game_map[dx+1][dy]==0) {
		dx++;
	} else if(y>dy&&dx!=x&&game_map[dx][dy+1]==0) {
		dy++;
	}
	if(x<dx&&dx>1&&game_map[dx-1][dy]==0) {
		dx--;
	} else if(y<dy&&dy>1&&game_map[dx][dy-1]==0) {
		dy--;
	}
	if(dy==y&&dx==x) {
		if(js==2) {
			bww-=100;
			if(hero=='W') {
				bww+=20;
			}
		}
	}
}
int qf() {
	while(true) {
		out1();
		play1();
		if(sh==0) {
			AI();
		} else {
			AI2();
		}
		boom_time--;
		if(bww<=0||boom_time<=0) {
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
			cout<<"土匪胜利";
			Sleep(2000);
			system("cls");
			return 0;
		}
		if(qfw<=0) {
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
			cout<<"警察胜利";
			Sleep(2000);
			system("cls");
			return 0;
		}
		Sleep(500);
	}
}
int bw() {
	while(true) {
		out2();
		play2();
		if(sh==0) {
			AI();
		} else {
			AI2();
		}
		boom_time--;
		if(bww<=0||boom_time<=0) {
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
			cout<<"土匪胜利";
			Sleep(2000);
			system("cls");
			return 0;
		}
		if(qfw<=0) {
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
			cout<<"警察胜利";
			Sleep(2000);
			system("cls");
			return 0;
		}
		Sleep(500);
	}
}
int srbp() {
	while(true) {
		out3();
		play3();
		boom_time--;
		if(bww<=0||boom_time<=0) {
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
			cout<<"土匪胜利";
			Sleep(2000);
			system("cls");
			return 0;
		}
		if(qfw<=0) {
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
			cout<<"警察胜利";
			Sleep(2000);
			system("cls");
			return 0;
		}
		Sleep(500);
	}
}
int story_bwz() {
	system("cls");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
	system("cls");
	cout<<"?警官:一个财阀为了避免我们和军方歼灭生化幽灵,土匪让一个改造人进攻城市,警局已经沦陷,我是唯一幸存者。";
	Sleep(2000);
	system("cls");
	cout<<"?警官:你一定要消灭他!";
	Sleep(2000);
	system("cls");
	cout<<"?警官:小心点,他拿着枪";
	Sleep(2000);
	system("cls");
	cout<<"?警官:啊!";
	Sleep(2000);
	system("cls");
}
int story_fcns() {
	system("cls");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
	system("cls");
	cout<<"军方指挥官:全体复仇女神部队成员请注意,有新的任务。";
	Sleep(2000);
	system("cls");
	cout<<"军方指挥官:一群警察拿了一个财阀的钱和实验邀请函,进入了生化空间站参加高额奖金生化猎杀,遭遇了生化幽灵。";
	Sleep(2000);
	system("cls");
	cout<<"军方指挥官:进入生化空间站,击毙生化幽灵,营救他们";
	Sleep(2000);
	system("cls");
}
int story_qfz() {
	system("cls");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
	system("cls");
	cout<<"土匪zero:我们改造士兵恐袭计划失败了,你只能自己进攻了";
	Sleep(2000);
	system("cls");
	cout<<"土匪zero:城市里有一个拿狙击枪的警察,你要消灭他";
	Sleep(2000);
	system("cls");
	cout<<"土匪zero:开始行动!";
	Sleep(2000);
	system("cls");
}
int story_yb(){
	system("cls");
	cout<<"土匪zero:我们的生化幽灵被击败了,不能让敌人跑了";
	Sleep(2000);
	system("cls");
} 
int js_h() {
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
	char c;
	while(c!='z') {
		system("cls");
		cout<<"n换角色,z确定。"<<endl;
		cout<<hero<<endl;
		if(hero=='+') {
			cout<<"斯沃特(手)";
			hurt=5;
		} else if(hero=='I') {
			cout<<"灵狐者(狙)";
			hurt=100;
		} else  if(hero=='8') {
			cout<<"刀锋(步)";
			hurt=10;
		} else if(hero=='T') {
			cout<<"奥摩(手)";
			hurt=5;
		} else if(hero=='=') {
			cout<<"飞虎队(狙)";
			hurt=100;
		} else if(hero=='V') {
			cout<<"夜玫瑰(步)";
			hurt=10;
		} else if(hero=='W') {
			cout<<"机械N22(手)<AC护甲免疫20%伤害>";
			hurt=5;
		} else if(hero=='A') {
			cout<<"审判者(狙)<可踢腿>";
			hurt=100;
		} else if(hero=='*') {
			cout<<"零(步)<可踢腿>";
			hurt=10;
		}

		if(kbhit()) {
			c=getch();
			if(c=='n') {
				if(hero=='+') {
					hero='I';
				} else if(hero=='I') {
					hero='8';
				} else if(hero=='8') {
					hero='T';
				} else if(hero=='T') {
					hero='=';
				} else if(hero=='=') {
					hero='V';
				} else if(hero=='V') {
					hero='W';
				} else if(hero=='W') {
					hero='A';
				} else if(hero=='A') {
					hero='*';
				} else if(hero=='*') {
					hero='+';
				}
			}
		}
		Sleep(500);
	}
	system("cls");
}
int map_what_bp() {
	system("cls");
	char cz;
	cout<<"x:沙漠灰 c:新年广场 v:黑色城镇 b:随机地图。";
	while(true) {
		while(!kbhit()) {

		}
		cz=getch();
		if(cz=='x') {
			map_num=1;
			bptd=0;
			dsr=1;
			return 0;
		}
		if(cz=='v') {
			map_num=2;
			bptd=0;
			dsr=1;
			return 0;
		}
		if(cz=='c') {
			map_num=4;
			bptd=0;
			dsr=1;
			return 0;
		}
		if(cz=='b') {
			map_num=x_what(4);
			map_num++;
			bptd=0;
			dsr=1;
			return 0;
		}
	}
}
int map_what_td() {
	system("cls");
	cout<<"x:运输船 c:冰雪宫殿  v:剧场  b:随机地图 ";
	char cz;
	while(!kbhit()) {

	}
	cz=getch();
	if(cz=='x') {
		map_num=0;
		bptd=1;
		dsr=1;
		bx=14514;
		by=14514;
		boom_time=10000;
		return 0;
	}
	if(cz=='c') {
		map_num=3;
		bptd=1;
		dsr=1;
		bx=14514;
		by=14514;
		boom_time=10000;
		return 0;
	}
	if(cz=='v') {
		map_num=2;
		bptd=1;
		dsr=1;
		bx=14514;
		by=14514;
		boom_time=10000;
		return 0;
	}
	if(cz=='b') {
		if(x_what(99)%3==0) {
			map_num=0;
			bptd=1;
			dsr=1;
			bx=14514;
			by=14514;
			boom_time=10000;
			return 0;
		} else if(x_what(99)%3==0) {
			map_num=3;
			bptd=1;
			bx=14514;
			by=14514;
			boom_time=10000;
			dsr=1;
			return 0;
		} else {
			map_num=2;
			bptd=1;
			dsr=1;
			bx=14514;
			by=14514;
			boom_time=10000;
			return 0;
		}
	}
}
int map_what_sh() {
	system("cls");
	sh=1;
	cout<<"x:13号地区 c:寂静镇 v:生化酒店 b:随机地图";
	char cz;
	while(!kbhit()) {

	}
	cz=getch();
	if(cz=='x') {
		map_num=1;
		bptd=1;
		dsr=1;
		bx=14514;
		by=14514;
		boom_time=10000;
		return 0;
	}
	if(cz=='c') {
		map_num=2;
		bptd=1;
		dsr=1;
		bx=14514;
		by=14514;
		boom_time=10000;
		return 0;
	}
	if(cz=='v') {
		map_num=5;
		bptd=1;
		bx=14514;
		by=14514;
		dsr=1;
		boom_time=10000;
		return 0;
	}
	if(cz=='b') {
		if(x_what(199)%3==0) {
			map_num=1;
			bptd=1;
			dsr=1;
			bx=14514;
			by=14514;
			boom_time=10000;
			return 0;
		} else if(x_what(199)%3==1) {
			map_num=2;
			bptd=1;
			bx=14514;
			by=14514;
			dsr=1;
			boom_time=10000;
			return 0;
		} else {
			map_num=5;
			bptd=1;
			bx=14514;
			by=14514;
			dsr=1;
			boom_time=10000;
			return 0;
		}
	}
}
int map_what_war() {
	system("cls");
	cout<<"x:保卫战 c:歼灭战 v:生化空间站救援 b:阻击战";
	char cz;
	while(true) {
		while(!kbhit()) {

		}
		cz=getch();
		if(cz=='x') {
			story_bwz();
			js=1;
			dsr=1;
			ms=1;
			bptd=1;
			map_num=2;
			bx=14514;
			by=14514;
			qfw=200;
			boom_time=100000;
			return 0;
		}
		if(cz=='c') {
			story_qfz();
			ms=0;
			dsr=1;
			js=2;
			bptd=1;
			bx=14514;
			by=14514;
			map_num=2;
			boom_time=100000;
			dhurt=25;
			return 0;
		}
		if(cz=='v') {
			story_fcns();
			map_num=6;
			bptd=1;
			sh=1;
			dsr=1;
			bx=14514;
			by=14514;
			boom_time=10000;
			return 0;
		}
		if(cz=='b'){
			story_yb();
			yb=1;
			map_num=6;
			bptd=1;
			sh=0;
			dsr=1;
			bx=14514;
			by=14514;
			boom_time=10000;
			return 0;
		}
	}
}
int map_what_sr() {
	system("cls");
	cout<<"x:双人爆破 c:双人枪战 v:双人生化";
	char cz;
	while(true) {
		while(!kbhit()) {

		}
		cz=getch();
		if(cz=='x') {
			js=1;
			dsr=2;
			ms=1;
			bptd=0;
			map_num=2;
			return 0;
		}
		if(cz=='c') {
			ms=0;
			dsr=2;
			js=2;
			bptd=1;
			bx=14514;
			by=14514;
			map_num=0;
			boom_time=100000;
			dhurt=25;
			return 0;
		}
		if(cz=='v') {
			map_num=1;
			bptd=1;
			dsr=2;
			sh=1;
			bx=14514;
			by=14514;
			boom_time=100000;
			return 0;
		}
	}
}
int what_map() {
	char cz;
	cz='A';
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
	cout<<"1:爆破模式 2:枪战模式  3:战役模式  4:双人模式 5:生化模式 ";
	while(true) {
		while(!kbhit()) {

		}
		cz=getch();
		if(cz=='1') {
			map_what_bp();
			return 0;
		}
		if(cz=='2') {
			map_what_td();
			return 0;
		}
		if(cz=='3') {
			map_what_war();
			return 0;
		}
		if(cz=='4') {
			map_what_sr();
			return 0;
		}
		if(cz=='5') {
			map_what_sh();
			return 0;
		}
	}
}
int map_wall() {
	for(int i=0; i<12; i++) {
		for(int j=0; j<12; j++) {
			game_map[i][j]=0;
		}
	}
	for(int i=0;i<12;i++){
		for(int j=0;j<12;j++){
			if(i==0||i==12||j==0||j==12){
				game_map[i][j]=1;
			}
		}
	}
	if(map_num==1||map_num==2) {
		x=1;
		y=5;
		dx=9;
		dy=5;
		if(bptd==0) {
			if(ms==0) {
				bx=5;
				by=1;
			} else {
				bx=5;
				by=9;
			}
		}
		for(int i=2; i<=8; i++) {
			game_map[i][3]=1;
			game_map[i][7]=1;
		}
	} else if(map_num==5) {
		x=1;
		y=5;
		dx=9;
		dy=5;
		if(bptd==0) {
			if(ms==0) {
				bx=5;
				by=5;
			} else {
				bx=5;
				by=5;
			}
		}
		for(int i=1; i<=9; i++) {
			game_map[i][1]=1;
			game_map[i][2]=1;
			game_map[i][3]=1;
		}
	} else if(map_num==6) {
		x=1;
		y=5;
		dx=9;
		dy=5;
		game_map[4][4]=1;
		game_map[4][6]=1;
		game_map[6][4]=1;
		game_map[6][6]=1;
		} else {
		x=1;
		y=1;
		dx=9;
		dy=9;
		game_map[2][2]=1;
		game_map[2][3]=1;
		game_map[3][2]=1;
		game_map[3][3]=1;
		game_map[8][8]=1;
		game_map[8][7]=1;
		game_map[7][7]=1;
		game_map[7][8]=1;
		if(bptd==0) {
			bx=5;
			by=5;
		}
	}
}
int main() {
	open();
	ms=x_what(2);
	while(true) {
		sh=0;
		yb=0;
		boom_time=20;
		qfw=100;
		bww=100;
		dhurt=5;
		bptd=0;
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
		what_map();
		map_wall();
		system("cls");
		if(dsr==1) {
			js_h();
			system("cls");
			for(int i=0; i<10; i++) {
				cout<<"加载中..."<<endl;
				cout<<"tips:wasd移动,空格攻击,e拆弹,q踢腿。警察(警方、军方):拆弹或击杀土匪(战役、生化仅限击杀)。土匪(土匪、佣兵及生化幽灵):击杀警察或炸弹爆炸(战役、生化仅限击杀)。";
				Sleep(1000);
				system("cls");
			}
			if(sh==1&&yb==0) {
				js=2;
				ms=1;
			}
			if(ms==0) {
				js=1;
				ms=1;
				qf();
			} else {
				ms=0;
				js=2;
				bw();
			}
		} else {
			system("cls");
			hero='+';
			hurt=5;
			for(int i=0; i<10; i++) {
				cout<<"加载中..."<<endl;
				cout<<"tips:1P警察:wasd移动,空格攻击,e拆弹,q踢腿  2P土匪:ijkl移动,m攻击,o踢腿。警察:拆弹或击杀土匪。土匪:击杀警察或炸弹爆炸。";
				Sleep(1000);
				system("cls");
			}
			srbp();
		}
	}
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的双人射击游戏的代码,使用C语言和EasyX图形库编写。 游戏规则: - 每个玩家控制一个坦克,可以移动和射击。 - 玩家每次射击会发射一枚子弹,子弹可以击中对方坦克或者砖头。 - 每个玩家初始有3条生命,被对方击中后生命减1,生命为0时游戏结束。 - 当其中一个玩家的生命为0时,游戏结束。 代码如下: ```c #include <graphics.h> #include <conio.h> #include <time.h> // 定义窗口大小和坦克、子弹的大小 const int WIDTH = 800; const int HEIGHT = 600; const int TANK_SIZE = 30; const int BULLET_SIZE = 5; // 定义玩家的生命 int life1 = 3; int life2 = 3; // 定义坦克的位置和速度 int x1 = 100, y1 = 100, speed1 = 5; int x2 = 500, y2 = 400, speed2 = 5; // 定义子弹的位置和速度 int bx1 = 0, by1 = 0, bspeed1 = 10; int bx2 = 0, by2 = 0, bspeed2 = 10; // 定义砖头的位置和大小 int brick_x = 300, brick_y = 200, brick_size = 50; // 判断两个矩形是否相交 bool isOverlap(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) { return x1 + w1 > x2 && x2 + w2 > x1 && y1 + h1 > y2 && y2 + h2 > y1; } int main() { // 初始化窗口和随机数生成器 initgraph(WIDTH, HEIGHT); srand(time(NULL)); // 游戏循环 while (true) { // 清空屏幕 cleardevice(); // 绘制砖头 setfillcolor(YELLOW); solidrectangle(brick_x, brick_y, brick_x + brick_size, brick_y + brick_size); // 绘制玩家1的坦克 setfillcolor(RED); solidrectangle(x1, y1, x1 + TANK_SIZE, y1 + TANK_SIZE); // 绘制玩家2的坦克 setfillcolor(GREEN); solidrectangle(x2, y2, x2 + TANK_SIZE, y2 + TANK_SIZE); // 移动玩家1的坦克 if (GetAsyncKeyState('A') & 0x8000) x1 -= speed1; if (GetAsyncKeyState('D') & 0x8000) x1 += speed1; if (GetAsyncKeyState('W') & 0x8000) y1 -= speed1; if (GetAsyncKeyState('S') & 0x8000) y1 += speed1; // 移动玩家2的坦克 if (GetAsyncKeyState(VK_LEFT) & 0x8000) x2 -= speed2; if (GetAsyncKeyState(VK_RIGHT) & 0x8000) x2 += speed2; if (GetAsyncKeyState(VK_UP) & 0x8000) y2 -= speed2; if (GetAsyncKeyState(VK_DOWN) & 0x8000) y2 += speed2; // 玩家1发射子弹 if (GetAsyncKeyState('J') & 0x8000) { if (bx1 == 0 && by1 == 0) { bx1 = x1 + TANK_SIZE / 2 - BULLET_SIZE / 2; by1 = y1 - BULLET_SIZE; } } // 玩家2发射子弹 if (GetAsyncKeyState(VK_SPACE) & 0x8000) { if (bx2 == 0 && by2 == 0) { bx2 = x2 + TANK_SIZE / 2 - BULLET_SIZE / 2; by2 = y2 + TANK_SIZE; } } // 移动玩家1的子弹 if (by1 > 0) { by1 -= bspeed1; setfillcolor(RED); solidcircle(bx1 + BULLET_SIZE / 2, by1 + BULLET_SIZE / 2, BULLET_SIZE / 2); } else { bx1 = 0; by1 = 0; } // 移动玩家2的子弹 if (by2 < HEIGHT) { by2 += bspeed2; setfillcolor(GREEN); solidcircle(bx2 + BULLET_SIZE / 2, by2 + BULLET_SIZE / 2, BULLET_SIZE / 2); } else { bx2 = 0; by2 = 0; } // 判断玩家1的子弹是否击中砖头或者玩家2的坦克 if (bx1 > 0 && by1 > 0) { if (isOverlap(bx1, by1, BULLET_SIZE, BULLET_SIZE, brick_x, brick_y, brick_size, brick_size)) { bx1 = 0; by1 = 0; } else if (isOverlap(bx1, by1, BULLET_SIZE, BULLET_SIZE, x2, y2, TANK_SIZE, TANK_SIZE)) { bx1 = 0; by1 = 0; life2--; if (life2 == 0) { outtextxy(WIDTH / 2 - 50, HEIGHT / 2 - 50, "Player 1 win!"); _getch(); break; } } } // 判断玩家2的子弹是否击中砖头或者玩家1的坦克 if (bx2 > 0 && by2 > 0) { if (isOverlap(bx2, by2, BULLET_SIZE, BULLET_SIZE, brick_x, brick_y, brick_size, brick_size)) { bx2 = 0; by2 = 0; } else if (isOverlap(bx2, by2, BULLET_SIZE, BULLET_SIZE, x1, y1, TANK_SIZE, TANK_SIZE)) { bx2 = 0; by2 = 0; life1--; if (life1 == 0) { outtextxy(WIDTH / 2 - 50, HEIGHT / 2 - 50, "Player 2 win!"); _getch(); break; } } } // 显示玩家的生命 settextcolor(RED); char str1[20]; sprintf_s(str1, "Player 1 life: %d", life1); outtextxy(10, 10, str1); settextcolor(GREEN); char str2[20]; sprintf_s(str2, "Player 2 life: %d", life2); outtextxy(WIDTH - 120, 10, str2); // 延时 Sleep(20); } // 关闭窗口 closegraph(); return 0; } ``` 以上就是一个简单的双人射击游戏的代码,希望能够对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值