用c++写一个坦克大战小游戏
时间: 2024-01-08 07:55:57 浏览: 86
用c、c++写的坦克战游戏
好的,下面是一个简单的坦克大战小游戏的代码示例:
```c++
#include <iostream>
#include <conio.h>
#include <Windows.h>
using namespace std;
const int MapWidth = 20;
const int MapHeight = 20;
class Tank {
private:
int x, y;
int direction; // 0:上,1:右,2:下,3:左
public:
Tank(int _x, int _y, int _direction) :x(_x), y(_y), direction(_direction) {}
void Move() {
switch (direction) {
case 0: // 上
if (y > 0) y--;
break;
case 1: // 右
if (x < MapWidth - 1) x++;
break;
case 2: // 下
if (y < MapHeight - 1) y++;
break;
case 3: // 左
if (x > 0) x--;
break;
}
}
void SetDirection(int _direction) {
direction = _direction;
}
int GetX() const {
return x;
}
int GetY() const {
return y;
}
};
class Game {
private:
char map[MapHeight][MapWidth + 1];
Tank playerTank;
public:
Game() {
// 初始化地图
for (int i = 0; i < MapHeight; i++) {
for (int j = 0; j < MapWidth; j++) {
if (i == 0 || i == MapHeight - 1 || j == 0 || j == MapWidth - 1) {
map[i][j] = '#'; // 外围墙壁
}
else {
map[i][j] = ' ';
}
}
map[i][MapWidth] = '\0';
}
// 初始化玩家坦克
playerTank = Tank(1, 1, 0);
map[playerTank.GetY()][playerTank.GetX()] = '@';
}
void Draw() {
system("cls"); // 清屏
// 绘制地图
for (int i = 0; i < MapHeight; i++) {
cout << map[i] << endl;
}
}
void Input() {
if (_kbhit()) { // 判断是否有键盘输入
switch (_getch()) {
case 'w':
playerTank.SetDirection(0);
break;
case 'd':
playerTank.SetDirection(1);
break;
case 's':
playerTank.SetDirection(2);
break;
case 'a':
playerTank.SetDirection(3);
break;
}
}
}
void Logic() {
// 移动玩家坦克
playerTank.Move();
// 更新地图
for (int i = 0; i < MapHeight; i++) {
for (int j = 0; j < MapWidth; j++) {
if (i == playerTank.GetY() && j == playerTank.GetX()) {
map[i][j] = '@'; // 玩家坦克
}
else if (i == 0 || i == MapHeight - 1 || j == 0 || j == MapWidth - 1) {
map[i][j] = '#'; // 外围墙壁
}
else {
map[i][j] = ' ';
}
}
map[i][MapWidth] = '\0';
}
}
void Run() {
while (true) {
Draw();
Input();
Logic();
Sleep(100); // 暂停一段时间,减缓游戏速度
}
}
};
int main() {
Game game;
game.Run();
return 0;
}
```
这个小游戏比较简单,只实现了玩家坦克的移动和地图绘制。你可以根据自己的需要,添加更多的游戏元素和功能,比如敌方坦克、射击、碰撞检测等。
阅读全文