贪吃蛇游戏的双人对战版

您所在的位置:网站首页 双人玩的贪吃蛇编程游戏 贪吃蛇游戏的双人对战版

贪吃蛇游戏的双人对战版

2024-07-09 10:38| 来源: 网络整理| 查看: 265

这是贪吃蛇游戏的双人对战版。

游戏双方分别控制蓝色和红色两条小蛇的前进,碰壁或咬到蛇身体算输。

这个对战版的贪吃蛇游戏网上有不少源代码,这个代码的特点就是为两个游戏者分别增加了命令队列,以实现更舒服的控制。

完整的游戏源代码如下:

/////////////////////////////////////////////////// // 程序名称:贪吃蛇游戏的双人对战版 // 编译环境:Visual C++ 6.0 / 2010,EasyX_20130322(beta) // 作  者:yangw80 // 最后修改:2012-7-23 // #include #include #include #include using namespace std; #define WIDTH 64 // 游戏区域网格宽度 #define HEIGHT 48 // 游戏区域网格高度 #define ITEMSIZE 10 // 游戏元素大小 #define CMD_A_UP 0x1 // 控制命令:游戏者 A 向上 #define CMD_A_DOWN 0x2 // 控制命令:游戏者 A 向下 #define CMD_A_LEFT 0x4 // 控制命令:游戏者 A 向左 #define CMD_A_RIGHT 0x8 // 控制命令:游戏者 A 向右 #define CMD_B_UP 0x10 // 控制命令:游戏者 B 向上 #define CMD_B_DOWN 0x20 // 控制命令:游戏者 B 向下 #define CMD_B_LEFT 0x40 // 控制命令:游戏者 B 向左 #define CMD_B_RIGHT 0x80 // 控制命令:游戏者 B 向右 #define CMD_QUIT 0x100 // 控制命令:退出游戏 // 定义游戏元素 enum ITEM { EMPTY = 0, WALL, PLAYER_A, PLAYER_B, PLAYER_DEAD, PLAYER_A_NEXT, PLAYER_B_NEXT }; // 全局变量 ITEM g_world[WIDTH][HEIGHT]; // 保存游戏区 POINT g_player_a; // 游戏者 A 的坐标 POINT g_player_b; // 游戏者 B 的坐标 POINT g_offset_a; // 游戏者 A 的移动偏移方向 POINT g_offset_b; // 游戏者 B 的移动偏移方向 // 绘制游戏元素 void DrawItem(int x, int y, ITEM item) { switch(item) { case EMPTY: setfillcolor(BLACK); break; case WALL: setfillcolor(LIGHTGRAY); break; case PLAYER_A: setfillcolor(BLUE); break; case PLAYER_B: setfillcolor(RED); break; case PLAYER_DEAD: setfillcolor(MAGENTA); break; } bar(x * ITEMSIZE + 1, y * ITEMSIZE + 1, (x + 1) * ITEMSIZE - 2, (y + 1) * ITEMSIZE - 2); g_world[x][y] = item; } // 初始化游戏 void init() { int x, y; // 绘制墙壁 for(x = 0; x < WIDTH; x++) { DrawItem(x, 0, WALL); DrawItem(x, HEIGHT - 1, WALL); } for(y = 1; y < HEIGHT - 1; y++) { DrawItem(0, y, WALL); DrawItem(WIDTH - 1, y, WALL); } // 绘制游戏区域 for (x = 1; x < WIDTH - 1; x++) for (y = 1; y < HEIGHT - 1; y++) DrawItem(x, y, EMPTY); // 随机产生两个游戏者的位置(至少间隔 5 格) do { g_player_a.x = rand() % (WIDTH - 6) + 3; g_player_a.y = rand() % (HEIGHT - 6) + 3; g_player_b.x = rand() % (WIDTH - 6) + 3; g_player_b.y = rand() % (HEIGHT - 6) + 3; }while ( (g_player_b.x - g_player_a.x) * (g_player_b.x - g_player_a.x) + (g_player_b.y - g_player_a.y) * (g_player_b.y - g_player_b.x)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3