帮我用C语言写推箱子游戏
时间: 2023-04-02 09:02:29 浏览: 225
用C语言编写推箱子游戏
好的,我可以为您提供推箱子游戏的 C 语言代码。以下是代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define ROW 10
#define COL 10
int map[ROW][COL] = {}; // 地图数组
int player_x, player_y; // 玩家坐标
int box_x, box_y; // 箱子坐标
int target_x, target_y; // 目标点坐标
void init_map(); // 初始化地图
void draw_map(); // 绘制地图
void move_player(int x, int y); // 移动玩家
void move_box(int x, int y); // 移动箱子
int check_win(); // 检查是否胜利
int main()
{
init_map(); // 初始化地图
while (1)
{
system("cls"); // 清屏
draw_map(); // 绘制地图
int key = getch(); // 获取键盘输入
switch (key)
{
case 'w': // 上
move_player(player_x - 1, player_y);
break;
case 's': // 下
move_player(player_x + 1, player_y);
break;
case 'a': // 左
move_player(player_x, player_y - 1);
break;
case 'd': // 右
move_player(player_x, player_y + 1);
break;
default:
break;
}
if (check_win()) // 检查是否胜利
{
system("cls"); // 清屏
draw_map(); // 绘制地图
printf("You win!\n");
break;
}
}
return ;
}
void init_map()
{
// 初始化地图
for (int i = ; i < ROW; i++)
{
for (int j = ; j < COL; j++)
{
if (i == || i == ROW - 1 || j == || j == COL - 1)
{
map[i][j] = 1; // 边界
}
else
{
map[i][j] = ; // 空地
}
}
}
// 设置障碍物
map[3][3] = 1;
map[3][4] = 1;
map[3][5] = 1;
map[4][3] = 1;
map[4][5] = 1;
map[5][3] = 1;
map[5][4] = 1;
map[5][5] = 1;
// 设置玩家和箱子的初始位置
player_x = 2;
player_y = 2;
box_x = 4;
box_y = 4;
// 设置目标点的位置
target_x = 8;
target_y = 8;
}
void draw_map()
{
// 绘制地图
for (int i = ; i < ROW; i++)
{
for (int j = ; j < COL; j++)
{
if (map[i][j] == 1) // 障碍物
{
printf("#");
}
else if (i == player_x && j == player_y) // 玩家
{
printf("@");
}
else if (i == box_x && j == box_y) // 箱子
{
printf("$");
}
else if (i == target_x && j == target_y) // 目标点
{
printf("X");
}
else // 空地
{
printf(" ");
}
}
printf("\n");
}
}
void move_player(int x, int y)
{
if (map[x][y] == ) // 空地
{
player_x = x;
player_y = y;
}
else if (map[x][y] == 2) // 箱子
{
int new_box_x = x + (x - player_x);
int new_box_y = y + (y - player_y);
if (map[new_box_x][new_box_y] == ) // 箱子可以移动
{
player_x = x;
player_y = y;
box_x = new_box_x;
box_y = new_box_y;
}
}
}
void move_box(int x, int y)
{
if (map[x][y] == ) // 空地
{
box_x = x;
box_y = y;
}
}
int check_win()
{
if (box_x == target_x && box_y == target_y) // 箱子到达目标点
{
return 1;
}
else
{
return ;
}
}
阅读全文