c语言控制台下运行的双人对战游戏,一个玩家为红色,一个为绿色
时间: 2024-03-17 18:46:47 浏览: 70
好的,我可以给你介绍一个简单的 C 语言双人对战游戏,其中一个玩家为红色,一个为绿色。这个游戏是在控制台下运行,使用了 Windows API 中的 Console API 来实现。
游戏规则如下:
1. 程序会在控制台上绘制一个地图,地图上有两个玩家的初始位置。
2. 玩家轮流输入方向键来移动自己的角色,可以向上、向下、向左、向右移动。
3. 如果两个玩家移动到了同一个位置,就会发生碰撞,游戏结束。
下面是一个简单的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define MAP_WIDTH 20
#define MAP_HEIGHT 10
#define PLAYER1_COLOR 12 // 红色
#define PLAYER2_COLOR 10 // 绿色
// 地图数据,0 表示空地,1 表示玩家 1,2 表示玩家 2
int map[MAP_HEIGHT][MAP_WIDTH] = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
};
// 在控制台上绘制地图
void draw_map() {
system("cls"); // 清空屏幕
for (int i = 0; i < MAP_HEIGHT; i++) {
for (int j = 0; j < MAP_WIDTH; j++) {
if (map[i][j] == 0) {
printf(" "); // 空地
} else if (map[i][j] == 1) {
printf("\033[%dm[]\033[0m", PLAYER1_COLOR); // 玩家 1
} else if (map[i][j] == 2) {
printf("\033[%dm[]\033[0m", PLAYER2_COLOR); // 玩家 2
}
}
printf("\n");
}
}
int main() {
// 初始化地图
map[0][0] = 1; // 玩家 1 初始位置
map[MAP_HEIGHT - 1][MAP_WIDTH - 1] = 2; // 玩家 2 初始位置
draw_map();
int player = 1; // 当前玩家
int x = 0, y = 0; // 玩家 1 的位置
int dx = 0, dy = 0; // 玩家移动的偏移量
do {
printf("玩家 %d 行动:\n", player);
switch (_getch()) { // 获取按键
case 72: // 上
dy = -1;
break;
case 80: // 下
dy = 1;
break;
case 75: // 左
dx = -1;
break;
case 77: // 右
dx = 1;
break;
default:
break;
}
if (player == 1) {
// 玩家 1 移动
if (x + dx >= 0 && x + dx < MAP_WIDTH && y + dy >= 0 && y + dy < MAP_HEIGHT && map[y + dy][x + dx] == 0) {
map[y][x] = 0;
x += dx;
y += dy;
map[y][x] = 1;
}
} else {
// 玩家 2 移动
if (MAP_WIDTH - 1 - x + dx >= 0 && MAP_WIDTH - 1 - x + dx < MAP_WIDTH && MAP_HEIGHT - 1 - y + dy >= 0 && MAP_HEIGHT - 1 - y + dy < MAP_HEIGHT && map[MAP_HEIGHT - 1 - y + dy][MAP_WIDTH - 1 - x + dx] == 0) {
map[MAP_HEIGHT - 1 - y][MAP_WIDTH - 1 - x] = 0;
x -= dx;
y -= dy;
map[MAP_HEIGHT - 1 - y][MAP_WIDTH - 1 - x] = 2;
}
}
draw_map();
dx = dy = 0;
// 判断是否碰撞
if (map[y][x] == 1 && player == 2) {
printf("玩家 2 碰到了玩家 1!\n");
break;
}
if (map[y][x] == 2 && player == 1) {
printf("玩家 1 碰到了玩家 2!\n");
break;
}
player = player == 1 ? 2 : 1; // 切换玩家
} while (1);
printf("游戏结束!\n");
return 0;
}
```
希望这个双人对战游戏能够带给你一些乐趣!
阅读全文