1 #include<bits/stdc++.h>
2 #include<conio.h>
3 using namespace std;
4 char mg[17][17]={
5 "# ##############",
6 "# # # # # ###",
7 "## # # ### ##",
8 "### ### ##",
9 "######## ###",
10 "### ## ###",
11 "### # # # # ##",
12 "### # ### ####",
13 "#### ## # # ##",
14 "### ## ##### ##",
15 "### # # ##",
16 "##### ### ###",
17 "## # ##########",
18 "## #####",
19 "########## #",
20 "############## #"
21 };
22 double start,end;
23 int x=0;int y=1;
24 void disp(){
25 system("cls");
26 for(int i=0;i<16;i++){
27 for(int j=0;j<16;j++){
28 printf("%c",mg[i][j]);
29 }
30 printf("\n");
31 }
32 printf("x..%d,y..%d",x,y);
33 }
34 void win(){
35 end=clock();
36 system("cls");
37 printf("YOU WIN!\nTIME:%.2f SECONDS",((double)(end-start)/CLK_TCK));
38 }
39 int main(){
40 start=clock();
41 mg[x][y]='o';
42 char temp;
43 while(x!=15||y!=14){
44 disp();
45 temp=getch();
46 if(temp=='W'){
47 if(x!=0&&mg[x-1][y]!='#'){
48 mg[x][y]=' ';--x;mg[x][y]='o';
49 }
50 }
51 if(temp=='A'){
52 if(y!=0&&mg[x][y-1]!='#'){
53 mg[x][y]=' ';--y;mg[x][y]='o';
54 }
55 }
56 if(temp=='S'){
57 if(x!=15&&mg[x+1][y]!='#'){
58 mg[x][y]=' ';++x;mg[x][y]='o';
59 }
60 }
61 if(temp=='D'){
62 if(y!=15&&mg[x][y+1]!='#'){
63 mg[x][y]=' ';++y;mg[x][y]='o';
64 }
65 }
66 }
67 win();
68 }

解释:
把迷宫保存在数组里。windows.h和conio.h都是常用的头文件,getch()表示输入一个字符但是不在屏幕上显示这个字符。我们不断读入字符,根据WASD分别判断是往上、下、左、右走,先判断要走的方向是否是墙(用#号表示)​,如果不是,那么就移动,直到终点结束循环。
运行效果截图:

自制C++游戏 迷宫的更多相关文章

  1. 自制javascript游戏-点燃火绳

    自制javascript游戏-点燃火绳 这是一款多关卡的游戏,目录有21个地图,游戏采纯原生 js库JY编写,所以编写得很简单迅速,这款游戏的思路来源于,一个人撸管太多,手会不会连鼠标也拿不稳,为了验 ...

  2. Angular4 自制打地鼠游戏

    前端工程师新手一枚,之前一直做些小设计,以及静态页面的编写工作.刚刚接触 Angular 没有多久,四个月前对于 Javascript也只是会写 alert 之流,现在进步算是很大,下面是自制的打地鼠 ...

  3. 用C#调用Matlab图像处理自制QQ游戏2D桌球瞄准器

    平时不怎么玩游戏,有时消遣就玩玩QQ里的2D桌球,但是玩的次数少,不能像骨灰级玩家一样百发百中,肿么办呢?于是某天突发奇想,决定自己也来做个“外挂”.说是外挂,其实只是一个瞄准器,毕竟外挂是修改别人的 ...

  4. 【★】Web精彩实战之<智能迷宫>

    JS精彩实战之<智能迷宫>      ---宝贵编程经验分享会--- hello大家好,这里是Web云课堂,之前的一年里我们经历了Html和CSS的系统攻城,此时的你们已经是做静态(动静结 ...

  5. Pascal小游戏之奇葩的RPG

    Pascal吧友作品 一个小RPG Chaobs转载 varplife,plifemax,patt,pre:integer;gr,ex,exmax:integer;alife,alife1,aatt, ...

  6. 如何做出一个好的c++游戏

    目录 一.游戏分类 1.文字型 2.画图型 3.键盘型 二.游戏创意 你的程序可以比较激情.热血 1.打怪,爆装备型 2.答题闯关型 可以添加一些不可思议的物品和玩法 三.学号c++/c的语法,是成功 ...

  7. 【★】Web精彩实战之

    JS精彩实战之<智能迷宫>      ---宝贵编程经验分享会--- hello大家好,这里是Web云课堂,之前的一年里我们经历了Html和CSS的系统攻城,此时的你们已经是做静态(动静结 ...

  8. [收藏夹整理]VC部分

    c++多线程(一) C++11 多线程 鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思想和特点) 鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员) [笔记]VS ...

  9. iOS开发——新特性OC篇&IOS9 SDK新特性

    iOS9 SDK新特性 WWDC 2015苹果开发者大会是移动开发者一年一度的盛会,InfoQ中文站除了第一时间整理Keynote内容分享给大家之外,还邀请了资深的一线开发者分享他们的收获.本文为王巍 ...

随机推荐

  1. Package Repository for Ubuntu Offline Installation

    For example, we need install "unzip" command on a Ubuntu machine without Internet. On a on ...

  2. CYPEESS USB3.0程序解读之---同步FIFO(slaveFifoSync)

    上一篇文章解读了CYPRESS FX3的GPIO的操作过程,下面解读同步FIFO的一个例子(slaveFifoSync). *生产者,消费者. 1.首先看DMA的回调函数(cyu3dma.h): ty ...

  3. Bootstrap 使用小记

    1,使用Bootstrap做页面布局,使用card容器 <div class="card"> <div class="card-header" ...

  4. wpf 绘图

  5. Javascript - Vue - webpack中的axios

    导入axios import Vue from "vue";import axios from "axios";import { get } from &quo ...

  6. 简陋的Excel到MYSQL的数据传输JAVA实现

    实现从excel读取数据,使用的是jxl.jar(到处都有,请大家随意下载),其中封装好了通过excel提供的接口,对excel中的数据库进行读取的实现: 先为了熟悉其中的方法使用,做了以下的测试: ...

  7. JavaWeb之数据库连接池

    时间:2016-12-2 23:56 --DBCP连接池连接池参数(所有连接池参数都有默认值):    初始大小    最小空闲连接数    增量    最大空闲连接数    最大连接数    最长等 ...

  8. sparksql解析流程

    1.sparkSql处理核心:Catalyst工作流程(本质:把sql.dataframe相结合,以树tree的形式来存储.优化) 2.catalyst工作流程 1)Parser(解析器):SqlPa ...

  9. 《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)

    1.简介 上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作. 2.为什么要切换窗口? Se ...

  10. Git使用教程七——Git实用技能

    Git实用技能 1.图形管理工具 Github for Desktop Source tree 老牌的GitGUl管理工具了,也号称是最好用的Git GUI工具.功能丰富,基本操作和高 级操作都非常流 ...