坦克大战
玩家一(蓝色):
‘w’上
‘s’下
‘a’左
‘d’右
‘i’上发子弹
‘k’下发子弹
‘j’左发子弹
‘l’右发子弹
玩家二(红色):
‘↑’上
‘↓’下
‘←’左
‘→’右
‘5’上发子弹
‘2’下发子弹
‘1’左发子弹
‘3’右发子弹
空格暂停
#include <Windows.h>
#include <iostream>
#include <conio.h>
#include <cstring>
#include <ctime>
#define color(x) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x)
using namespace std;
void gotoxy(int x, int y) {
HANDLE hout;
COORD pos;
pos.X = x * 2;
pos.Y = y;
hout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout, pos);
cout << " ";
}
int b[13][13];
int x1 = 1, y1 = 10;
int x2 = 10, y2 = 1;
void showb() {
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
if (b[i][j] == 1 || b[i][j] == 2 || b[i][j] == 3 || b[i][j] == 4) {
color(0xff);
} else {
color(0x00);
}
if (i == y1 && j == x1) {
color(0xbb);
} else if (i == y2 && j == x2) {
color(0xcc);
}
gotoxy(j, i);
}
}
}
void moveb() {
bool f[13][13];
memset(f, 0, sizeof(f));
for (int i = 1; i <= 11; i++) {
for (int j = 1; j <= 10; j++) {
if (b[i][j] == 1 && !f[i][j]) {
if (i > 1) {
b[i][j] = 0;
b[i - 1][j] = 1;
f[i - 1][j] = 1;
} else {
b[i][j] = 0;
}
}
if (b[i][j] == 2 && !f[i][j]) {
if (i < 11) {
b[i][j] = 0;
b[i + 1][j] = 2;
f[i + 1][j] = 1;
} else {
b[i][j] = 0;
}
}
if (b[i][j] == 3 && !f[i][j]) {
if (j > 1) {
b[i][j] = 0;
b[i][j - 1] = 3;
f[i][j - 1] = 1;
} else {
b[i][j] = 0;
}
}
if (b[i][j] == 4 && !f[i][j]) {
if (j < 10) {
b[i][j] = 0;
b[i][j + 1] = 4;
f[i][j + 1] = 1;
} else {
b[i][j] = 0;
}
}
}
}
}
void set() {
color(0xff7);
for (int i = 0; i < 11; i++) {
gotoxy(0, i);
gotoxy(11, 11 - i);
gotoxy(i, 0);
gotoxy(11 - i, 11);
Sleep(30);
}
gotoxy(11, 0);
gotoxy(0, 11);
Sleep(30);
}
void qset(bool flag) {
color(0xff7);
for (int i = 0; i < 11; i++) {
gotoxy(0, i);
gotoxy(11, 11 - i);
gotoxy(i, 0);
gotoxy(11 - i, 11);
}
gotoxy(11, 0);
gotoxy(0, 11);
color(0xf);
gotoxy(2, 4);
if (!flag) {
cout << "==red win==";
} else {
cout << "==blue win==";
}
}
int main() {
int sr, sb;
bool flag;
srand((int)time(0));
set();
color(0xbb); gotoxy(x1, y1);
color(0xcc); gotoxy(x2, y2);
while (1) {
if (sb > 0) {
sb--;
}
if (sr > 0) {
sr--;
}
if (_kbhit()) {
char ch = getch();
if (ch == 'a' && x1 > 1) {
color(0x00); gotoxy(x1, y1);
x1--;
color(0xbb); gotoxy(x1, y1);
}
if (ch == 'd' && x1 < 10) {
color(0x00); gotoxy(x1, y1);
x1++;
color(0xbb); gotoxy(x1, y1);
}
if (ch == 'w' && y1 > 1) {
color(0x00); gotoxy(x1, y1);
y1--;
color(0xbb); gotoxy(x1, y1);
}
if (ch == 's' && y1 < 10) {
color(0x00); gotoxy(x1, y1);
y1++;
color(0xbb); gotoxy(x1, y1);
}
if (sb <= 0) {
if (ch == 'i') {
b[y1 - 1][x1] = 1;
sb = 25;
}
if (ch == 'k') {
b[y1 + 1][x1] = 2;
sb = 25;
}
if (ch == 'j') {
b[y1][x1 - 1] = 3;
sb = 25;
}
if (ch == 'l') {
b[y1][x1 + 1] = 4;
sb = 25;
}
}
if (ch == 75 && x2 > 1) {
color(0x00); gotoxy(x2, y2);
x2--;
color(0xbb); gotoxy(x2, y2);
}
if (ch == 77 && x2 < 10) {
color(0x00); gotoxy(x2, y2);
x2++;
color(0xbb); gotoxy(x2, y2);
}
if (ch == 72 && y2 > 1) {
color(0x00); gotoxy(x2, y2);
y2--;
color(0xbb); gotoxy(x2, y2);
}
if (ch == 80 && y2 < 10) {
color(0x00); gotoxy(x2, y2);
y2++;
color(0xbb); gotoxy(x2, y2);
}
if (sr <= 0) {
if (ch == '5') {
b[y2 - 1][x2] = 1;
sr = 25;
}
if (ch == '2') {
b[y2 + 1][x2] = 2;
sr = 25;
}
if (ch == '1') {
b[y2][x2 - 1] = 3;
sr = 25;
}
if (ch == '3') {
b[y2][x2 + 1] = 4;
sr = 25;
}
}
if (ch == ' ') {
while (1) {
if (_kbhit()) {
char ch2 = getch();
if (ch2 == ' ') {
break;
}
}
}
}
}
if (b[y1][x1] == 1 || b[y1][x1] == 2 || b[y1][x1] == 3 || b[y1][x1] == 4) {
flag = 0;
break;
}
if (b[y2][x2] == 1 || b[y2][x2] == 2 || b[y2][x2] == 3 || b[y2][x2] == 4) {
flag = 1;
break;
}
showb();
moveb();
Sleep(10);
}
qset(flag);
while (1);
return 0;
}
说明 只能用Dev-c++