我自己用的melonjs,感觉还不错,上手难度也不高,里面除了可以自己撸地图场景还可以用tiled界面画地图。
struct maptype{
int money,belong
char name[20]
}map[9][13]={0}
struct player
{
int x,y,money,di
}man[3]={0}
int dx[5]={0,0,1, 0,-1}
int dy[5]={0,1,0,-1, 0}
int i,j,x,y
int turn,step,res
char out[1000]
char *s11="姓名史艳文"
char *s12="资金"
char *s21="姓名比卡超"
char *s22="资金"
char *s31="你需要付给对手"
char *s32="元"
char *s41="老友轮到你走啦"
char *s42="轮到对手走啦"
char *s51="买下此地要"
char *s52="买"
char *s53="不买"
char *s54="老大你的钱不够"
char *z1="起点"
char *z2="休息处"
char *fa="经过起点发旅费"
char *m1="路过岳王庙"
char *m2="路过纯白镇"
char *m3="获取钱三千"
char *m4="获取钱六千"
char *zi1="行"
char *zi2="动"
char *zi3="查"
char *zi4="看"
char *zi5="离"
char *zi6="开"
char *last="你要花两千元升级地价吗"
#define ESC 0x011b
#define ENTER 0x1c0d
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define UP0x4800
#define DOWN 0x5000
#include<stdio.h>
#include<stdlib.h>
#include"first.c"
#include<graphics.h>
#include "bmp16.h"
#include"files.c"
int graphdriver=VGA
int graphmode=VGAHI
FILE *hzk_p
void open_hzk(void)
void get_hz(char incode[],char bytes[])
void dishz(int x,int y,char code[],int color)
#include"rich2.c"
int main()
{
initgraph(&graphdriver,&graphmode,"")
cleardevice()
open_hzk()
first()
begin()
files()
setbkcolor(0)
while (1)
{
print(0)
step=random(6)+1
{}
if (turn==1)
{
next3()
}
chuli(turn,step)
buy()
{}
turn=(turn+1)%2
if (turn==0)
turn=2
step=0
}
return 0
}
void open_hzk()
{
hzk_p=fopen("hzk16","rb")
if (!hzk_p)
{
printf("The file no\n")
getch()
closegraph()
exit(1)
}
}
void get_hz(char incode[],char bytes[])
{
unsigned char qh,wh
unsigned long offset
qh=incode[0]-0xa0
wh=incode[1]-0xa0
offset=(94*(qh-1)+(wh-1))*32L
fseek(hzk_p,offset,SEEK_SET)
fread(bytes,32,1,hzk_p)
}
void dishz(int x0,int y0,char code[],int color)
{
unsigned char mask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}
int i,j,x,y,pos
char mat[32]
get_hz(code,mat)
y=y0
for(i=0i<16i++)
{
x=x0
pos=2*i
for (j=0j<16j++)
{
if ((mask[j%8]&mat[pos+j/8])!=NULL)
putpixel(x,y,color)
++x
}
++y
}
}
#include<iostream.h>#include<iomanip.h>
#include<string.h>
#define _GOLD 2 //标志有金子的格子
#define _TRAP 3 //标志有陷阱的格子
#define _OBSTACLE 4 //标志有障碍物的格子
class simgame
{
public:
simgame(char *nm,int)
void terminate(){delete []name}
void init(int data[],int n)
void run()
void display()
private:
char *name
int way[50]//标志环道格子种类的数组
int location
int life
int money
int isdead//判断是否死亡
int isforward//判断是顺行还是逆行
}
simgame::simgame(char *nm,int isfd=1)
{
strcpy(name,nm)
isforward=isfd
location=0
life=money=100
isdead=0
}
void simgame::init(int data[],int n)
{
int nn=0//用于循环data数组以保证把way数组完整赋值
int i
way[0]=0
if(isforward)
{
for(int i=1i<50i++)
{
if(nn=n)nn=0//如果data数组到达末尾,从头开始
way[i]=data[nn]
nn++
}
}
else
{
nn=n-1
for(i=1i<50i++)
{
if(nn<0)nn=n-1
way[i]=data[nn]
nn--
}
}
}
void simgame::display()
{
cout<<"老鼠"<<name<<":"
if(life>0)
{
cout<<"位置="<<setw(5)<<location
cout<<"生命="<<setw(5)<<life
cout<<"金钱="<<setw(5)<<money
}
else
cout<<"Dead!"
}
void simgame::run()
{
int i
int isstop=0
if(isdead)return
if(isforward) //正常行走的过程
{
for(i=1i<5i++)
{
if(location+i==50)
location-=50//如果到达末尾则从头开始走,并把位置变量重新赋值
if(way[location+i]==_OBSTACLE) //如果途中有障碍物,则停止
{
location+=i
isstop=1//标志,表示是否停留
break
}
}
if(!isstop)
location+=4
switch(way[location])
{
case _GOLD:money+=50break
case _TRAP:life-=80break
default:break
}
if(life<=0)isdead=1
}
else //逆行的过程
{
for(i=1i<4i++)
{
if(location+i==50)
location-=50
if(way[location+i]==_OBSTACLE)
{
location+=i
isstop=1
break
}
}
if(!isstop)
location+=3
switch(way[location])
{
case _GOLD:money+=50break
case _TRAP:life-=80break
default:break
}
if(life<=0)isdead=1
}
}
void main()
{
simgame mice1("A")
simgame mice2("B",0)
int data[20]={1,2,2,2,3,2,3,4,1,2,3,4,1,2,3,4,3,2,2,1}
mice1.init(data,20)
mice2.init(data,20)
for(int i=0i<5i++)
{
mice1.run()
mice2.run()
cout<<"轮次:"<<i+1<<endl
mice1.display()
mice2.display()
}
mice1.terminate()
mice2.terminate()
}
可以编译,但不可以运行,求大虾给诊断一哈,谢谢谢谢
问题补充:题目:一条由50个格子组成的环形跑道,其中一个格子是起点,两只鼠都从起点按相反方向出发,一只鼠按正方向前进且每次前进4格,另一只鼠按反方向出发,且每次前进3个格子,每只鼠出发时都有100点生命值和100个金子跑道由普通格子,带金币的格子,带陷阱的格子,带障碍的格子等四种组成!
规则:a,起点是普通格子,任何普通格子鼠可以顺利通过.
b.鼠每路过或停在一个带金币的格子上就增加50个金币
c.鼠停留在陷阱的格子上,损失生命80点.
d.鼠路过带障碍的格子时,本轮停止前进.
1.并实现相关的类,同时模拟此游戏
输入:已在main()中提供一个大小为20的一维整型数组data,数值可为1,2,3,4,分别表示四种类型的格子,其中data(0)表示起点.
输出:10轮次内,每轮走完后两只老鼠的各自位置,生命,和拥有的金币数.
要main()函数应为如下格式
void main()
{
int data[20]={1,2,2,2,3,2,3,4,1,2,3,4,1,2,3,4,3,2,2,1}
simgame game
game.init(data,20)
game.run(5)
game.terminate()
}
输出:
轮次1:
老鼠A:位置=##生命=##金钱=##
老鼠B:位置=##生命=##金钱=##
轮次2:
.......
宏:
#define _GOLD 2 //金子
#define _TRAP 3 //陷阱
#define _OBSTACLE 4 //障碍物
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)