用c语言写一个双人射击游戏
时间: 2024-06-09 12:05:38 浏览: 21
好的,我可以给你一个简单的示例代码,但需要注意的是,这只是一个基本的框架,你需要自己添加更多的功能和细节以使游戏更加完善。
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define ROW 20 // 地图行数
#define COL 30 // 地图列数
// 定义地图中的元素
#define WALL '#' // 墙壁
#define PLAYER1 '@' // 玩家1
#define PLAYER2 '*' // 玩家2
#define BULLET1 '-' // 玩家1的子弹
#define BULLET2 '+' // 玩家2的子弹
// 全局变量
char map[ROW][COL]; // 地图
int player1X, player1Y; // 玩家1的坐标
int player2X, player2Y; // 玩家2的坐标
// 初始化地图
void init_map() {
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (i == 0 || j == 0 || i == ROW - 1 || j == COL - 1) {
map[i][j] = WALL; // 地图四周设置为墙壁
}
else {
map[i][j] = ' '; // 其他位置为空格
}
}
}
// 设置玩家1的初始位置
player1X = ROW / 2;
player1Y = 3;
map[player1X][player1Y] = PLAYER1;
// 设置玩家2的初始位置
player2X = ROW / 2;
player2Y = COL - 4;
map[player2X][player2Y] = PLAYER2;
}
// 显示地图
void show_map() {
system("cls"); // 清屏
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%c", map[i][j]);
}
printf("\n");
}
}
// 玩家1移动
void move_player1(char dir) {
switch (dir) {
case 'w':
if (map[player1X - 1][player1Y] == ' ') {
map[player1X][player1Y] = ' ';
player1X--;
}
break;
case 's':
if (map[player1X + 1][player1Y] == ' ') {
map[player1X][player1Y] = ' ';
player1X++;
}
break;
case 'a':
if (map[player1X][player1Y - 1] == ' ') {
map[player1X][player1Y] = ' ';
player1Y--;
}
break;
case 'd':
if (map[player1X][player1Y + 1] == ' ') {
map[player1X][player1Y] = ' ';
player1Y++;
}
break;
}
map[player1X][player1Y] = PLAYER1;
}
// 玩家2移动
void move_player2(char dir) {
switch (dir) {
case 'i':
if (map[player2X - 1][player2Y] == ' ') {
map[player2X][player2Y] = ' ';
player2X--;
}
break;
case 'k':
if (map[player2X + 1][player2Y] == ' ') {
map[player2X][player2Y] = ' ';
player2X++;
}
break;
case 'j':
if (map[player2X][player2Y - 1] == ' ') {
map[player2X][player2Y] = ' ';
player2Y--;
}
break;
case 'l':
if (map[player2X][player2Y + 1] == ' ') {
map[player2X][player2Y] = ' ';
player2Y++;
}
break;
}
map[player2X][player2Y] = PLAYER2;
}
// 发射子弹
void shoot(char dir, char bullet) {
int x, y;
switch (dir) {
case 'w':
x = player1X - 1;
y = player1Y;
break;
case 's':
x = player1X + 1;
y = player1Y;
break;
case 'a':
x = player1X;
y = player1Y - 1;
break;
case 'd':
x = player1X;
y = player1Y + 1;
break;
case 'i':
x = player2X - 1;
y = player2Y;
break;
case 'k':
x = player2X + 1;
y = player2Y;
break;
case 'j':
x = player2X;
y = player2Y - 1;
break;
case 'l':
x = player2X;
y = player2Y + 1;
break;
}
map[x][y] = bullet;
}
int main() {
init_map(); // 初始化地图
show_map(); // 显示地图
char ch, dir1, dir2;
while (1) {
// 玩家1移动
if (kbhit()) {
ch = getch();
if (ch == 'w' || ch == 's' || ch == 'a' || ch == 'd' || ch == ' ') {
dir1 = ch;
if (ch == ' ') {
shoot(dir1, BULLET1); // 玩家1射击
}
}
}
move_player1(dir1);
// 玩家2移动
if (kbhit()) {
ch = getch();
if (ch == 'i' || ch == 'k' || ch == 'j' || ch == 'l' || ch == '/') {
dir2 = ch;
if (ch == '/') {
shoot(dir2, BULLET2); // 玩家2射击
}
}
}
move_player2(dir2);
show_map(); // 显示地图
Sleep(100); // 稍作暂停
}
return 0;
}
```
这是一个非常简单的双人射击游戏,你可以根据自己的需要添加更多的功能,比如增加敌人、道具、音效等等。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)