以下是一个简单的 C++ 打怪小游戏代码示例:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
// 定义玩家和怪物的属性
int player_hp = 100;
int player_attack = 10;
int player_defense = 5;
int monster_hp = 50;
int monster_attack = 8;
int monster_defense = 3;
// 定义游戏地图和场景
char map[10][10] = {
{'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'},
{'#', '.', '.', '.', '.', '.', '.', '.', '.', '#'},
{'#', '.', '#', '#', '#', '#', '.', '#', '.', '#'},
{'#', '.', '.', '.', '.', '.', '.', '#', '.', '#'},
{'#', '.', '#', '#', '#', '.', '#', '#', '.', '#'},
{'#', '.', '.', '.', '#', '.', '.', '.', '.', '#'},
{'#', '#', '#', '.', '#', '#', '#', '#', '.', '#'},
{'#', '.', '.', '.', '.', '.', '.', '.', '.', '#'},
{'#', '.', '#', '#', '#', '#', '.', '#', '.', '#'},
{'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'}
};
// 定义玩家和怪物的位置
int player_x = 1;
int player_y = 1;
int monster_x = 3;
int monster_y = 5;
// 定义游戏结束标志
bool game_over = false;
// 函数声明
void draw_map();
void move_player(char dir);
void move_monster();
void check_collision();
void check_game_over();
int main() {
// 初始化随机数种子
srand(time(NULL));
// 显示游戏地图和玩家位置
draw_map();
// 游戏循环
while (!game_over) {
// 玩家移动
char dir = getch();
move_player(dir);
// 怪物移动
move_monster();
// 检测碰撞和战斗
check_collision();
// 检测游戏结束
check_game_over();
}
return 0;
}
// 绘制游戏地图和玩家位置
void draw_map() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (i == player_y && j == player_x) {
cout << 'P';
} else if (i == monster_y && j == monster_x) {
cout << 'M';
} else {
cout << map[i][j];
}
}
cout << endl;
}
}
// 玩家移动
void move_player(char dir) {
int new_x = player_x;
int new_y = player_y;
switch (dir) {
case 'w':
new_y--;
break;
case 's':
new_y++;
break;
case 'a':
new_x--;
break;
case 'd':
new_x++;
break;
default:
break;
}
// 检测新位置是否合法
if (map[new_y][new_x] != '#') {
player_x = new_x;
player_y = new_y;
}
}
// 怪物移动
void move_monster() {
int dir = rand() % 4;
int new_x = monster_x;
int new_y = monster_y;
switch (dir) {
case 0:
new_y--;
break;
case 1:
new_y++;
break;
case 2:
new_x--;
break;
case 3:
new_x++;
break;
default:
break;
}
// 检测新位置是否合法
if (map[new_y][new_x] != '#') {
monster_x = new_x;
monster_y = new_y;
}
}
// 检测碰撞和战斗
void check_collision() {
if (player_x == monster_x && player_y == monster_y) {
// 计算伤害和防御
int damage_to_monster = player_attack - monster_defense;
int damage_to_player = monster_attack - player_defense;
// 更新血量
player_hp -= damage_to_player;
monster_hp -= damage_to_monster;
// 输出战斗结果
cout << "You hit the monster for " << damage_to_monster << " damage." << endl;
cout << "The monster hit you for " << damage_to_player << " damage." << endl;
}
}
// 检测游戏结束
void check_game_over() {
if (player_hp <= 0) {
cout << "You died. Game over." << endl;
game_over = true;
} else if (monster_hp <= 0) {
cout << "You killed the monster. You win!" << endl;
game_over = true;
}
}
```
这个示例代码使用了基本的 C++ 语法和函数,包括数组、循环、条件语句、随机数、键盘输入等等。您可以根据自己的需要进行修改和扩展。