📄 treasure.c
字号:
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "graphics.h"
#define LEFT 0x4b00 /*光标左键值*/
#define RIGHT 0x4d00 /*光标右键值*/
#define DOWN 0x5000 /*光标下键值*/
#define UP 0x4800 /*光标上键值*/
#define ESC 0x011b /* ESC键值*/
#define ENTER 0x1c0d /* 回车键值*/
int Enemyhp=700,MP=600,HP=1000,Row,Column,Lastrow,Lastcolumn,Endornot=0,Loseornot=0,Letter=0,Currentmap[19][24], /*全局变量:Enemyhp,敌人的生命值;HP,角色的生命值;MP,角色的魔法值;*/
map1[19][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,21}, /* Row,角色所在的行;Column,角色所在的列;Lastrow, 角色上次所在的行;Lastcolumn, 角色上次所在的列;*/
{1,0,500,0,0,0,0,0,0,501,0,0,0,0,0,0,0,0,1,1,1}, /* Currentmap,当前地图对应的二维数组;Loseornot,人物是否死亡;Endornot,游戏是否结束;Letter,人物是否有信;*/
{1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,1}, /* 地图 :本游戏地图通过数组表现,每个数组对应一个地图,另外还有一个Currentmap数组,对应当前人物所在的地图*/
{1,0,40,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1}, /* 数组上值为1,地图上为砖,为人物无法通行的格;值为0,地图上为空地,为人物可以能过的格;值在40到59之间,地图上为door,为转换地图的格子,人物到达*/
{1,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,1}, /* 这些格子时会调用changemap()函数;值为500以上为剧情点,地图上为hi!,人物到达这些点会调用scenario()函数*/
{1,0,0,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,1,1}, /* 另外: 本游戏现有十二个地图,增加数组并相应改变changemap()函数可继续增加地图,每个地图数组都有一个特殊的元素,就是[0][20],它的值可代表地图数组的*/
{1,0,0,1,1,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1}, /* 序号,值为21,为第一幅,值为22为第二幅,以此类推*/
{1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1}, /**/
{1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1},
{1,0,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,41},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}},
map2[19][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,43,1,22},
{44,502,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,1,1,1,1,1,42,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1},
{1,1,1,40,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,1},
{1,1,0,0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,1},
{1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1},
{1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1},
{1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,41,1,1,1,1,1}},
map3[19][24]={{1,1,1,1,1,1,1,1,1,1,40,1,1,1,1,1,1,1,1,1,23},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,41,1,1,1,1,1,1,1,1,1}},
map4[19][24]={{1,1,41,1,1,1,1,1,1,42,1,1,1,1,1,1,43,1,1,1,24},
{1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1},
{1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1},
{1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1},
{1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1},
{1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,40,1,1,1,1,1,1,1,1,1,1}},
map5[19][24]={{1,1,1,1,1,1,1,40,1,1,1,1,1,1,1,1,1,1,1,1,25},
{1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,42},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{41,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,43,1,1,1,1,1,1,1,1,1}},
map6[19][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,26},
{1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1},
{1,1,1,1,1,1,1,0,1,1,0,0,1,40,41,42,1,0,0,1},
{1,1,43,1,1,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1},
{1,1,0,1,44,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1},
{1,1,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1},
{1,1,0,1,1,0,0,0,0,1,0,0,1,1,1,0,0,0,0,1},
{1,1,0,1,45,0,0,0,0,1,0,0,1,1,0,0,0,0,0,1},
{1,1,0,1,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1},
{1,1,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1},
{1,1,0,1,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1},
{1,1,0,1,46,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1},
{1,1,0,0,0,0,0,0,503,1,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}},
map7[19][24]={{1,1,1,1,1,1,40,1,1,1,1,1,1,1,1,1,1,1,1,1,27},
{1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1},
{1,1,1,1,1,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1},
{1,1,1,1,1,0,0,0,0,0,1,41,0,0,0,1,1,0,0,1},
{42,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1},
{1,0,0,0,0,0,0,0,0,0,504,0,0,0,0,1,1,0,0,1},
{43,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1},
{1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1},
{1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1},
{1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1},
{1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1},
{1,1,1,1,1,0,0,0,0,0,1,0,0,44,1,1,1,0,0,1},
{1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,45,1,1,1,1,1,1,1,1,1,1,1,1}};
map8[19][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,28},
{1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,1,40,0,0,41,1,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1},
{1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1},
{1,1,42,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1},
{1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1},
{1,1,43,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1},
{1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1},
{1,1,44,0,0,0,0,0,0,0,0,0,1,45,0,0,46,1,0,1},
{1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1},
{1,1,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}},
map9[19][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29},
{1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1},
{1,0,1,1,1,1,1,0,1,0,0,0,0,1,1,1,0,0,0,1},
{1,0,1,1,1,1,1,0,1,0,0,0,0,1,40,1,0,0,0,1},
{1,0,1,1,1,1,1,0,1,0,0,0,1,1,0,1,0,0,0,1},
{1,0,1,1,1,1,1,0,1,0,0,0,1,41,0,1,0,0,0,1},
{1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,0,1},
{1,0,1,1,1,1,1,0,1,0,0,1,42,0,0,1,0,0,0,1},
{1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,0,1},
{1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1},
{1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}},
map10[19][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,30},
{1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1},
{1,1,1,1,40,0,0,0,1,1,1,0,0,1,1,1,1,0,0,1},
{1,1,1,1,1,0,0,0,1,1,1,0,1,41,0,0,42,1,0,1},
{1,1,1,1,43,0,0,0,1,1,1,0,1,0,0,0,0,1,0,1},
{1,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,0,1,0,1},
{1,1,1,1,44,0,0,0,1,1,1,0,1,0,0,0,0,1,0,1},
{1,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,0,1,0,1},
{1,1,1,1,45,0,0,0,1,1,1,0,1,0,0,0,0,1,0,1},
{1,1,1,1,1,0,0,0,1,1,1,0,1,46,0,0,47,1,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}},
map11[19][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,31},
{1,40,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,0,0,0,1},
{1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,42,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,506,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,505,1,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1},
{1,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}},
map12[19][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,32},
{1,1,40,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,507,0,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1},
{1,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,1,508,1,0,1,0,0,0,1,1,0,0,0,0,1},
{1,0,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,0,0,1},
{1,0,0,0,1,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1},
{1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1},
{1,0,0,0,0,0,0,1,0,1,0,1,0,1,1,0,1,0,0,1},
{1,0,0,0,0,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1},
{1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1},
{1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1},
{1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
void start() /*开始函数,开始时调用,显示开始的文字*/
{
outtextxy(200,30,"Long Long ago,");
bioskey(0);
outtextxy(150,70,"There is a tiny village near a maze.");
bioskey(0);
outtextxy(160,110,"A tale is spreaded in the village.");
bioskey(0);
outtextxy(60,150,"In the maze,there is some treasure leaved by a group of pirates.");
bioskey(0);
outtextxy(220,190,"One day");
bioskey(0);
outtextxy(240,230,".");
bioskey(0);
outtextxy(240,260,".");
bioskey(0);
outtextxy(240,290,".");
bioskey(0);
}
void invokemap(int mapinvoked[][24]) /*调用地图函数*/
{ /*将要调用的地图*/
int i,j; /*数组的元素值依次*/
for (i=0;i<15 ;i++ ) /*赋给Currentmap数组*/
{ /*的每个元素*/
for (j=0;j<21 ;j++ ) /**/
{ /**/
Currentmap[i][j]=mapinvoked[i][j]; /**/
}
}
}
void showface() /*画脸函数*/
{ /**/
circle(30*(Column-1)+15,30*(Row-1)+15,13); /*在人物所在的当前位置画一张笑脸代表人物*/
circle(30*(Column-1)+10,30*(Row-1)+12,3); /**/
circle(30*(Column-1)+20,30*(Row-1)+12,3); /**/
arc(30*(Column-1)+15,30*(Row-1)+15,220,320,9); /**/
} /**/
void showmap() /*画地图函数*/
{
int i,j; /*跟据Currentmap数组画出当前地图*/
cleardevice(); /*数组元素值为1,画方形代表砖*/
setbkcolor(1); /*为0,什么都不画*/
setcolor(15); /*大于500,显示hi!*/
for (i=0;i<15 ;i++ ) /*在40到59之间,显示door*/
{ /**/
for (j=0;j<20 ;j++ ) /**/
{
if (Currentmap[i][j]==1)
{
setfillstyle(1,WHITE);
bar(30*j,30*i,30*j+28,30*i+28);
}
if (Currentmap[i][j]>=500)
{
outtextxy(30*j+6,30*i+10,"hi!");
}
if (Currentmap[i][j]>=40&&Currentmap[i][j]<=59)
{
outtextxy(30*j,30*i+10,"door");
}
}
}
}
void changemap(int mapnum,int pointnum) /*地图转换函数*/
{ /**/
switch (mapnum) /*当人物所在行列位置对应的数组元素值为40到59之间,也就是人物在door处时调用该函数*/
{ /*跟据输入的mapnun参数确定当前是第几幅地图*/
case 21:if (pointnum==40) /*并跟据输入的pointnum参数确定人物所在的位置*/
{ /*以此可以知道人物进入的是哪个door,并调用相应地图*/
invokemap(map5); /**/
Row=8; /**/
Column=9; /**/
} /**/
if (pointnum==41) /**/
{ /**/
invokemap(map2); /**/
Row=9; /**/
Column=4; /**/
}
break;
case 22:if (pointnum==40)
{
invokemap(map1);
Row=14;
Column=19;
}
if (pointnum==41)
{
invokemap(map3);
Row=2; /*表明人物在下一幅地图(第三幅地图),出现的位置是第二行,第十一列*/
Column=11; /**/
}
if (pointnum==42)
{
invokemap(map4);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -