直接干脆点吧,这个是迷宫游戏,先做出来迷宫界面,然后的话,记住从起点到出口的路线,从黑暗中走出去,用灯光,直接去摸索,走出去,每一次运行的界面都是随机的,所以说难度肯定也是有的,代码的话也比较多,所以说只能暂时发一部分,后面顺带把效果图发出来

#include

#include

#include

#include

// 定义常量

#define PI3.141592653589// 圆周率

#define UNIT_GROUND0// 表示地面

#define UNIT_WALL1// 表示墙

#define LIGHT_API / 3// 灯光的角度范围

#defineLIGHT_R120// 灯光的照射距离

#defineWIDTH480// 矿井的宽度

#defineHEIGHT480// 矿井的高度

#define SCREENWIDTH640// 屏幕宽度

#defineSCREENHEIGHT480// 屏幕高度

#defineUNIT20// 每个墙壁单位的大小

#define PLAYER_R5// 游戏者的半径

// 定义常量

constSIZEg_utMap = { 23, 23 };// 矿井地图的尺寸(基于 UNIT 单位)

constPOINTg_utPlayer = { 1, 1 };// 游戏者的位置(基于 UNIT 单位)

constPOINTg_utExit = { 21, 22 };// 出口位置(基于 UNIT 单位)

constPOINTg_ptOffset = { 10, 10 };// 矿井显示在屏幕上的偏移量

//

// 定义全局变量

//

POINTg_ptPlayer;// 游戏者的位置

POINTg_ptMouse;// 鼠标位置

IMAGEg_imgMap(WIDTH, HEIGHT);// 矿井平面图

DWORD*g_bufMap;// 矿井平面图的显存指针

IMAGEg_imgRender(WIDTH, HEIGHT);// 渲染平面图

DWORD*g_bufRender;// 渲染平面图的显存指针

DWORD*g_bufScreen;// 屏幕的显存指针

// 枚举用户的控制命令

enum CMD { CMD_QUIT = 1, CMD_UP = 2, CMD_DOWN = 4, CMD_LEFT = 8, CMD_RIGHT = 16, CMD_RESTART = 32 };

//

// 函数声明

//

// 初始化

voidWelcome();// 绘制游戏界面

voidReadyGo();// 准备开始游戏

voidInitGame();// 初始化游戏数据

// 矿井生成

voidMakeMaze(int width, int height);// 初始化(注:宽高必须是奇数)

voidTravelMaze(int x, int y, BYTE** aryMap);// 遍历 (x, y) 四周

voidDrawWall(int x, int y, bool left, bool top, bool right, bool bottom);

// 画一面墙

// 绘制

voidPaint();// 绘制视野范围内的矿井

voidLighting(int _x, int _y, double _a);// 在指定位置和角度“照明”

voidDrawPlayer();// 绘制游戏者

voidDrawExit();// 绘制出口

// 处理用户控制

intGetCmd();// 获取用户输入的命令

voidOnUp();// 向上移动

voidOnLeft();// 向左移动

voidOnRight();// 向右移动

voidOnDown();// 向下移动

boolCheckWin();// 检查是否到出口

//

// 函数定义

//

// 主程序

void main()

{

// 初始化

initgraph(SCREENWIDTH, SCREENHEIGHT);// 创建绘图窗口

srand((unsigned)time(NULL));// 设置随机种子

// 显示主界面

Welcome();

// 游戏过程

int c;

do

{

ReadyGo();

while (true)

{

// 获得用户输入

c = GetCmd();

// 处理用户输入

if (c & CMD_UP)OnUp();

if (c & CMD_DOWN)OnDown();

if (c & CMD_LEFT)OnLeft();

if (c & CMD_RIGHT)OnRight();

if (c & CMD_RESTART)

{

if (MessageBox(GetHWnd(), _T("您要重来一局吗?"), _T("询问"), MB_OKCANCEL | MB_ICONQUESTION) == IDOK)

break;

}

if (c & CMD_QUIT)

{

if (MessageBox(GetHWnd(), _T("您确定要退出游戏吗?"), _T("询问"), MB_OKCANCEL | MB_ICONQUESTION) == IDOK)

break;

}

// 绘制场景

Paint();

// 判断是否走出矿井

if (CheckWin())

{

// 是否再来一局

HWND hwnd = GetHWnd();

if (MessageBox(hwnd, _T("恭喜你走出来了!\n您想再来一局吗?"), _T("恭喜"), MB_YESNO | MB_ICONQUESTION) != IDYES)

c = CMD_QUIT;

break;

}

// 延时

Sleep(16);

}

} while (!(c & CMD_QUIT));

// 关闭图形模式

closegraph();

}

// 准备开始游戏

void ReadyGo()

{

// 初始化

InitGame();

// 停电前兆

int time[7] = { 1000, 50, 500, 50, 50, 50, 50 };//设置7次闪光

int i, x, y;

for (i = 0; i < 7; i++)

{

if (i % 2 == 0)

{

putimage(0, 0, &g_imgMap);

DrawPlayer();

DrawExit();

}

else

clearrectangle(0, 0, WIDTH, HEIGHT);

Sleep(time[i]);

}

// 电力缓慢中断

for (i = 255; i >= 0; i -= 5)

{

for (y = (HEIGHT - 1) * SCREENWIDTH; y >= 0; y -= SCREENWIDTH)

for (x = 0; x < WIDTH; x++)

if (g_bufScreen[y + x] != 0)

g_bufScreen[y + x] -=0x050505;

FlushBatchDraw();

DrawPlayer();

DrawExit();

Sleep(50);

}

// 绘制游戏区

Paint();

}

先是游戏迷宫的界面:(加QQ群:466572167,群内有大量学习资源可供学习)

下一张是 游戏开始运行的界面

里面运用到的知识点的话,虽说不多,但是做出来也有难度的,运用到的有: 迷宫随机生成的算法 、数组、图形编程的显存渲染。写项目代码循环敲,并不是那么重要,重要的是思路!!!我就说到这了。

这代码粘贴复制的好方便

最简单的迷宫算法,右手摸强一直走就好,cpu算的话应该过图很快

给授权费没有啊

沙发

挺有意思

潭州教育

利用字符数组c语言编写迷宫探路游戏,C语言打造——迷宫游戏相关推荐

  1. c语言如何自定义运算公式,怎样用C语言编写数学公式 如何用C语言输入数学公式...

    导航:网站首页 > 怎样用C语言编写数学公式 如何用C语言输入数学公式 怎样用C语言编写数学公式 如何用C语言输入数学公式 相关问题: 匿名网友: 1.C语言有现场的常用数学函数,所在函数库为m ...

  2. c语言编写自动生成密码,c语言密码生成.doc

    c语言密码生成 计算机实习报告 一 题目分析 1 实验题目: 实现一个简单的密码生成系统.一个有效的密码由L(3<=L<=15)个小写字母(来自传统的拉丁字母集'a'...'z')组成,至 ...

  3. 用c语言编写研究生录取程序,C语言_课程设计---研究生初试录取管理系统.doc

    计算机科学与技术系 课程设计任务书 2010-2011年第二学期 课程 C语言课程设计 课程设计名称 研究生初试录取管理系统 专业班级 10 计本4 指导教师 2011年6月 一. 课程设计目的 将理 ...

  4. c语言编写的商品管理程序,C语言编写的商品管理系统

    C语言编写的商品管理系统 商品的增删改查 #include #include #include #define K 5 int m=2; //商品种数 /*定义商品结构体*/ struct goods ...

  5. c语言编写英语词典软件,C语言课程设计一种简单的英文词典排版系统的实现.doc...

    C语言课程设计一种简单的英文词典排版系统的实现 目 录 课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构设计5 5.算法设计6 6.程序代码13 7.程 ...

  6. C语言编写Python包,使用C语言编写Python扩展1——Hello World

    能够使用C语言编写扩展是Python一大卖点吧,这可以将一些关键的代码使用C来写以提升程序的性能.本文是参考了Python的官方文档整理而来的,同时结合了Python2跟Python3.按照惯例现在先 ...

  7. 用c语言编写棋盘以及光标,C语言实习指导书.doc

    上海工程技术大学<高级语言程序设计>实习指导书 <高级语言程序设计实习> 实 习 指 导 书 高级语言程序设计课题组编 管理学院 2013年8月 目 录 TOC \o &quo ...

  8. 用c语言编写两整数乘积,c语言两个数相乘求积 c语言输入两个整数求乘积

    C语言中求两数相乘的程序? 思路:double类型的范围: -1.7*10(-308)-1.7*10(308),如果两个数的乘积不超过这样的精度,可以直接使用*符号进行运算. 参考代码: #inclu ...

  9. c语言编写图形登录窗口,C语言实现图形界面登陆窗口

    #include#define LEN_A 20//账户长度 #define LEN_P 10//密码长度 typedef struct Account { char name[20]; long i ...

  10. C语言编写一下棋程序,C语言编写的与电脑下棋程序代码

    C语言编写的与电脑下棋程序代码 C语言编写的与电脑下棋程序代码 #include "stdafx.h" #include using namespace std; void che ...

最新文章

  1. Vaadin 10+作为CUBA UI的未来
  2. Linux中wait()函数及waitpid()函数
  3. [css] 你有用过弹性布局吗?说说你对它的理解
  4. vue 右边跳转 实现左侧栏_Vue 后台管理项目8-侧边菜单的实现
  5. 6个很棒的PostCSS插件,让您成为一个CSS向导
  6. 架构解读丨Volcano作业资源预留设计原理
  7. 中国电信5G套餐用户渗透率达到50.4%
  8. CentOS:linux开放指定端口命令
  9. 【Python-3.3】字典存储调查问卷
  10. Linux下运行java DES AES加解密
  11. 准备将redis引入项目做消息队列使用
  12. 计算机网络之验证性实验(tracert+ARP)
  13. 十六进制转二进制(转)
  14. 升级啦!二维码签到适用PC+andriod+IOS-PHP源码-开源代码
  15. cocos2d-x 多点触控总结
  16. 如何利用安卓手机搭建WEB服务器
  17. Java 8 日期时间类
  18. ddn高性能服务器,全球IO500最新榜单公布,Intel、DDN、浪潮等位列前5
  19. 世界最大同性交友网站七夕大礼包————remote :Support for password authentication was removed on August 13,
  20. 零基础可以学习厚涂么?

热门文章

  1. 2023年,想要年赚百万必懂的道理?
  2. it巨头的组织架构图
  3. R语言基本统计分析——抽样
  4. JavaScript小案例程序保存(完整代码+效果展示)
  5. 开源共享 · 融金服产 — 2021 中关村论坛开源创新发展论坛在京举办
  6. Mysql查询时间数据
  7. 【蓝桥杯JavaB组真题详解】振兴中华(2013)
  8. 研发新员工(应届生)培训计划——初稿
  9. mysql中prepare_MySQL PREPARE语句
  10. Kaggle猫狗大战模型搭建总结