如何用C语言加上easyx做出一个高逼格的迷宫游戏

前言:

迷宫游戏有多种类型,例如营救公主类、闯关类等,其他类型就不一一列举了。但无论哪种类型的迷宫游戏,其核心功能始终是迷宫的实现。不同的游戏只会根据自身的性质,在迷宫中加入一些特定元素。我们今天的任务,便是用C语言来实现这一核心功能,确保其原汁原味,不添加任何额外功能。


效果展示:

感觉怎么样是不是很高级?

我们废话不多说,直接上源码 。

完整代码:

#include <stdio.h>
#include <graphics.h>
#include <time.h>



//
// 定义全局变量
//
BYTE** g_aryMap = NULL;			// 迷宫地图
SIZE	g_szMap;					// 迷宫地图的尺寸
IMAGE	g_imgSight(360, 280);		// 游戏的视野
RECT	g_rtSight;					// 游戏的视野的范围
IMAGE	g_imgItem(180, 
  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于C++和EasyX开发的走迷宫益智小游戏源码+项目说明.zip 【项目介绍】 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶, 或者实际项目借鉴参考! 当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 版本:V1.0 时间:2020-7-22 环境:开始使用 VS2010,后来用 VS2017 修改 简介:一个普通的迷宫小游戏 感谢:感谢 QQ 群 C语言革命7 全体成员为该项目的开发做了巨大的贡献,没有你们,该作品也不能有现在的情况! 版权:作者原创,无抄袭,不涉及版权问题,仅用作学习、娱乐,欢迎各位fork! ### 玩法: ~~~cpp 游戏开始选择系列关卡 有三种系列: 森林(简单,基于 Prim 算法) 地牢(中等,基于图论 DFS 算法) 地狱(困难,基于暴力 DFS 算法) 选择系列后,进入游戏 WSAD 上下左右,游戏中有计时器 ~~~ ### 文件: ~~~cpp Maze.h : 初始化头文件 Maze.cpp : 程序开端文件 Game.h : 游戏类头文件 Adventrue.cpp : 冒险模式类文件 Forest.cpp : 冒险模式-森林系列类实现文件 Dungeon.cpp : 冒险模式-地牢系列类实现文件 Infernal.cpp : 冒险模式-地狱系列类实现文件 Help.cpp : 帮助信息类实现文件 Other.cpp : 刷新界面、放置按钮、输出对话框类实现文件 ~~~
好的,下面是基于EASYX库的井字棋小游戏C语言代码: ```c #include <graphics.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #define ROW 3 #define COL 3 #define SIZE 100 int board[ROW][COL]; // 棋盘数组,0表示空位,1表示玩家1,2表示玩家2 // 初始化棋盘 void init_board() { int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { board[i][j] = 0; } } } // 绘制棋盘 void draw_board() { int i, j; setcolor(WHITE); for (i = 0; i <= ROW; i++) { line(SIZE, i * SIZE + SIZE, COL * SIZE + SIZE, i * SIZE + SIZE); } for (j = 0; j <= COL; j++) { line(j * SIZE + SIZE, SIZE, j * SIZE + SIZE, ROW * SIZE + SIZE); } } // 绘制棋子 void draw_piece(int row, int col, int player) { int x = col * SIZE + SIZE; int y = row * SIZE + SIZE; if (player == 1) { setcolor(YELLOW); circle(x, y, SIZE / 2 - 5); } else if (player == 2) { setcolor(RED); line(x - SIZE / 2 + 10, y - SIZE / 2 + 10, x + SIZE / 2 - 10, y + SIZE / 2 - 10); line(x - SIZE / 2 + 10, y + SIZE / 2 - 10, x + SIZE / 2 - 10, y - SIZE / 2 + 10); } } // 判断胜负 int check_win(int player) { int i, j; // 判断每一行 for (i = 0; i < ROW; i++) { if (board[i][0] == player && board[i][1] == player && board[i][2] == player) { return 1; } } // 判断每一列 for (j = 0; j < COL; j++) { if (board[0][j] == player && board[1][j] == player && board[2][j] == player) { return 1; } } // 判断对角线 if (board[0][0] == player && board[1][1] == player && board[2][2] == player) { return 1; } if (board[0][2] == player && board[1][1] == player && board[2][0] == player) { return 1; } return 0; } // 判断平局 int check_tie() { int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { if (board[i][j] == 0) { return 0; } } } return 1; } int main() { int player = 1; // 当前玩家,初始为玩家1 int row, col; // 选择的行列 int win = 0; // 是否胜利 int tie = 0; // 是否平局 init_board(); initgraph(COL * SIZE + 2 * SIZE, ROW * SIZE + 2 * SIZE); draw_board(); while (!win && !tie) { if (player == 1) { outtextxy(10, ROW * SIZE + SIZE + 10, "玩家1,请选择位置:"); } else { outtextxy(10, ROW * SIZE + SIZE + 10, "玩家2,请选择位置:"); } while (1) { if (kbhit()) { char c = getch(); if (c == 'q') { closegraph(); exit(0); } row = (int) (c - '1') / COL; col = (int) (c - '1') % COL; if (row >= 0 && row < ROW && col >= 0 && col < COL && board[row][col] == 0) { break; } } delay(10); } board[row][col] = player; draw_piece(row, col, player); win = check_win(player); tie = check_tie(); player = (player == 1) ? 2 : 1; // 切换玩家 } if (win) { if (player == 1) { outtextxy(10, ROW * SIZE + SIZE + 10, "玩家2胜利!"); } else { outtextxy(10, ROW * SIZE + SIZE + 10, "玩家1胜利!"); } } else { outtextxy(10, ROW * SIZE + SIZE + 10, "平局!"); } while (1) { if (kbhit()) { char c = getch(); if (c == 'q') { break; } } delay(10); } closegraph(); return 0; } ``` 这个程序使用了EASYX库来实现图形界面,通过键盘输入来选择棋子的位置。你可以在开发环境中编译运行此程序,体验一下这个简单的井字棋小游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天若有情673

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值