#include<graphics.h>
#include<cstdio>
#include<time.h>
#define MMax_up 500
struct P
{
int hp;
int Mhp;
int sp;
int Msp;
int atc;
int def;
int Lv;
int up;
int Mup;
char name[25];
char sp_name[25];
int shlx;
};
P player[4],mon[20],mon0;
int Mup_s[30]={0,100,150,200,250,300,500};
int wea_name=0;
int player_name=0;
int tx,ty,dx,dy;
int spadd=10;
int jn_ls=0;
int jn_add;
int logic[25][25];
int logic_Max;
int S;
int i2;
bool is_0;
bool is_jn;
int mon_Lv[10][40]={{},{3,1,2,3},{3,3,4,5}};
int mon_name;
int dod=1;
PIMAGE w_jxhz,k_zlrh,y_sx;
PIMAGE what[6];
PIMAGE c[4];
PIMAGE tt;
int max(int a,int b)
{if(a>=b) return a;return b;}
int min(int a,int b)
{if(a<=b) return a;return b;}
void ztl_move()
{
bar(0,620,600,700);
setfont(20,0,"");
xyprintf(0,620,"角色");xyprintf(80,620,player[player_name].name);
int f_Mup=Mup_s[player[player_name].Lv];
if(f_Mup==0) f_Mup=MMax_up;
xyprintf(150,620,"Lv.%d %d/%d",player[player_name].Lv,player[player_name].up,f_Mup);
if(!is_jn) xyprintf(0,640,"hp%d/%d 攻%d 防%d 智慧%d",player[player_name].hp,player[player_name].Mhp,player[player_name].atc,player[player_name].def,spadd);
if(!is_jn) return;
if(player_name==1)
{
xyprintf(0,640," 技能 惊吓盒子 消耗 %dsp 初始sp %d",player[player_name].Msp,player[player_name].sp);
xyprintf(0,660," 效果:造成 %d%% 物理伤害 眩晕敌人一回合",3*jn_add);
putimage(0,640,w_jxhz);
}
else if(player_name==2)
{
xyprintf(0,640," 技能 指令:融毁 消耗 %dsp 初始sp %d",player[player_name].Msp,player[player_name].sp);
xyprintf(0,660," 效果:伤害类型变为真实(无视防御)持续三回合");
xyprintf(80,680," 攻击力提升至%d%% 防御力提升至%d%%",3*jn_add,2*jn_add);
putimage(0,640,k_zlrh);
}
else if(player_name==3)
{
xyprintf(0,640," 技能 惊吓盒子 消耗 %dsp 初始sp %d",player[player_name].Msp,player[player_name].sp);
xyprintf(0,660," 效果:造成 %d%% 物理伤害 回复20%%的最大生命值",2*jn_add);
putimage(0,640,y_sx);
}
return;
}
void ztl_print()
{
int x=0;
bar(0,600,600,620);
setfont(15,0,"");
xyprintf(x,600,player[player_name].name);
x+=textwidth(player[player_name].name);
xyprintf(x,600," hp %d/%d 技%d/%d",player[player_name].hp,player[player_name].Mhp,player[player_name].sp,player[player_name].Msp);
x+=170;
xyprintf(x,600,mon0.name);
x+=textwidth(mon0.name);
xyprintf(x,600," hp %d/%d 技%d/%d",mon0.hp,mon0.Mhp,mon0.sp,mon0.Msp);
setfont(20,0,"");
return;
}
int sp_pd(int S,int fit_x,int fit_y)
{
int x=fit_x,y=fit_y;
int sh;
if(S==1)
{
player[player_name].sp-=player[player_name].Msp;
switch (player_name) {
case 1:
xyprintf(x,y," 使用了 ");
x+=textwidth(" 使用了 ");
xyprintf(x,y,player[player_name].sp_name);
x+=textwidth(player[player_name].sp_name);
xyprintf(x,y," 造成了 ");
x+=textwidth(" 造成了 ");
setcolor(RED);sh=player[player_name].atc*3*jn_add/100-mon0.def;
sh=max(sh,(int)player[player_name].atc*0.3*jn_add/100);
xyprintf(x,y,"%d",sh);
x+=40;setcolor(LIGHTGRAY);
xyprintf(x,y," 点的伤害");mon0.hp-=sh;
getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
if(!mon0.Mup) xyprintf(x,y,"对敌人造成了一回合的眩晕!"),mon0.Mup=-1;
else xyprintf(x,y,"敌方免疫了眩晕!");
getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
break;
case 2:
xyprintf(x,y," 使用了 ");
x+=textwidth(" 使用了 ");
xyprintf(x,y,player[player_name].sp_name);
x+=textwidth(player[player_name].sp_name);getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
xyprintf(x,y,"伤害类型变为 ");
x+=textwidth("伤害类型变为 ");
setcolor(RED);
xyprintf(x,y,"真实");
setcolor(LIGHTGRAY);getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
xyprintf(x,y,"攻击力提升至%d%% 防御力提升至%d%%",3*jn_add,2*jn_add);getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
xyprintf(x,y,"持续三回合");getch();
jn_ls=3;
player[player_name].shlx=1;player[player_name].atc*=(jn_add*3);player[player_name].atc/=100;
player[player_name].def*=(2*jn_add);player[player_name].def/=100;
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
break;
case 3:
xyprintf(x,y," 使用了 ");
x+=textwidth(" 使用了 ");
xyprintf(x,y,player[player_name].sp_name);
x+=textwidth(player[player_name].sp_name);getch();
xyprintf(x,y," 造成了 ");
x+=textwidth(" 造成了 ");
setcolor(RED);sh=player[player_name].atc*2*jn_add/100-mon0.def;
sh=max(sh,(int)player[player_name].atc*0.2*jn_add/100);
xyprintf(x,y,"%d",sh);
x+=40;setcolor(LIGHTGRAY);
xyprintf(x,y," 点的伤害");mon0.hp-=sh;
getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
xyprintf(x,y,"回复了 ");
x+=textwidth("回复了 ");
xyprintf(x,y,"%d",(int)(player[player_name].Mhp*0.2));x+=30;
xyprintf(x,y,"点hp");
player[player_name].hp+=(player[player_name].Mhp*0.2);player[player_name].hp=min(player[player_name].Mhp,player[player_name].hp);
getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
break;
}
}
else
{
mon0.sp-=mon0.Msp;
getch();
switch (mon_name)
{
case 2:
xyprintf(x,y," 使用了 ");
x+=textwidth(" 使用了 ");
xyprintf(x,y,mon0.sp_name);
x+=textwidth(mon0.sp_name);
xyprintf(x,y," 造成了 ");
x+=textwidth(" 造成了 ");
setcolor(RED);sh=mon0.atc*2-player[player_name].def;
sh=max(sh,(int)mon0.atc*0.2);
xyprintf(x,y,"%d",sh);
x+=40;setcolor(LIGHTGRAY);
xyprintf(x,y," 点的伤害");player[player_name].hp-=sh;
getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
xyprintf(x,y,"回复了 5sp");getch();mon0.sp+=5;
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
break;
case 3:
xyprintf(x,y," 使用了 ");
x+=textwidth(" 使用了 ");
xyprintf(x,y,mon0.sp_name);
x+=textwidth(mon0.sp_name);
xyprintf(x,y," 造成了 ");
x+=textwidth(" 造成了 ");
setcolor(RED);sh=mon0.atc*3-player[player_name].def;
sh=max(sh,(int)mon0.atc*0.3);
xyprintf(x,y,"%d",sh);
x+=40;setcolor(LIGHTGRAY);
xyprintf(x,y," 点的伤害");player[player_name].hp-=sh;
getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
break;
case 4:
xyprintf(x,y," 使用了 ");
x+=textwidth(" 使用了 ");
xyprintf(x,y,mon0.sp_name);
x+=textwidth(mon0.sp_name);
xyprintf(x,y," 造成了 ");
x+=textwidth(" 造成了 ");
setcolor(RED);sh=mon0.atc*3.5-player[player_name].def;
sh=max(sh,(int)mon0.atc*0.3);
xyprintf(x,y,"%d",sh);
x+=40;setcolor(LIGHTGRAY);
xyprintf(x,y," 点的伤害");player[player_name].hp-=sh;
getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
break;
case 5:
xyprintf(x,y," 使用了 ");
x+=textwidth(" 使用了 ");
xyprintf(x,y,mon0.sp_name);
x+=textwidth(mon0.sp_name);
xyprintf(x,y," 造成了 ");
x+=textwidth(" 造成了 ");
setcolor(RED);sh=mon0.atc*2-player[player_name].def;
sh=max(sh,(int)mon0.atc*0.2);
xyprintf(x,y,"%d",sh);
x+=40;setcolor(LIGHTGRAY);
xyprintf(x,y," 点的伤害");player[player_name].hp-=sh;
getch();
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
xyprintf(x,y,"回复了 5sp");getch();mon0.sp+=5;
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
if(rand()%100<49)
{
xyprintf(x,y,"完成了快速装填!再进行一次攻击!");
y+=20;x=0;
if(y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),y=680;
y=sp_pd(S,x,y);
}
break;
}
}
return y;
}
void getZoomImage(PIMAGE pimg, const char* fileName, int width, int height)
{
PIMAGE temp = newimage();
getimage(temp, fileName);
if ((getwidth(pimg) != width) || (getheight(pimg) != height))
resize(pimg, width, height);
putimage(pimg, 0, 0, width, height, temp, 0, 0, getwidth(temp), getheight(temp));
delimage(temp);
}
void logic_print()
{
cleardevice();
for(int i=1;i<=20;i++)
for(int j=1;j<=20;j++)
if(logic[i][j]>=0 && S!=2) putimage((i-1)*30,(j-1)*30,what[logic[i][j]]);
switch(player_name)
{
case 1:
setfont(30,30,"宋体");xyprintf((tx-1)*30,(ty-1)*30,"W");break;
case 2:
setfont(30,15,"宋体");xyprintf((tx-1)*30,(ty-1)*30,"凯");break;
case 3:
setfont(30,15,"宋体");xyprintf((tx-1)*30,(ty-1)*30,"炎");break;
}
if(S==0)
{
ztl_move();
}
else if(S==1)
{
putimage(0,600,what[logic[dx][dy]]);
setfont(20,0,"宋体");xyprintf(40,600,"确定要触发该事件吗?");
if(i2==1) setbkcolor(BLUE);
xyprintf(40,630,"确认");
setbkcolor(BLACK);Sleep(1);
if(i2==-1) setbkcolor(BLUE);
xyprintf(160,630,"算了");
setbkcolor(BLACK);Sleep(1);
}
else if(S==2)
{
setfont(20,0,"宋体");
xyprintf(0,0,"按下任意键恢复");
xyprintf(0,20,"W A S D控制行走方向 J打开技能");
}
else if(S==3)
{
if(logic[dx][dy]==0)
{
putimage(0,600,what[logic[dx][dy]]);setfont(20,0,"宋体");
xyprintf(40,600,"猜猜会发生什么?机遇或是挑战?");
}
else
{
if(is_0)
{
putimage(0,600,what[logic[dx][dy]]);setfont(20,0,"宋体");
if(logic[dx][dy]==1) xyprintf(40,600,"战斗准备!!!");
else if(logic[dx][dy]==2) xyprintf(40,600,"难得的休整时间");
else if(logic[dx][dy]==3) xyprintf(40,600,"提升你的技能!");
else if(logic[dx][dy]==4) xyprintf(40,600,"保养武器");
return;
}
if(logic[dx][dy]==1)
{
setfont(20,0,"宋体");
if(player_name==1) xyprintf(0,600,"W VS"),xyprintf(120,600,mon[mon_name].name);
else if(player_name==2) xyprintf(0,600,"凯尔希 VS"),xyprintf(180,600,mon[mon_name].name);
else xyprintf(0,600,"炎客 VS"),xyprintf(150,600,mon[mon_name].name);
}
}
}
return;
}
void map()
{
srand((unsigned)time(0));
for(int i=1;i<=20;i++)
for(int j=1;j<=20;j++)
{
int r=rand();
logic[i][j]=r%10;
if(logic[i][j]>=5) logic[i][j]=0;
}
for(int i=1;i<=300;i++) logic[rand()%20+1][rand()%20+1]=-1;
//memset(logic,0,sizeof(logic));
logic[tx][ty]=-1;
return;
}
void first()
{
tt=newimage();
//血量 血量上限 初动技力 技力 攻击力 防御力 等级 经验值 经验值上限
player[1]={100,100,0,30,30,5,1,0,0,"W","惊吓盒子",0};
player[2]={150,150,0,20,10,5,1,0,0,"凯尔希","指令:融毁",3};
player[3]={200,200,0,35,30,0,1,0,0,"炎客","歃血",0};
mon[1]={50,50,0,0,10,5,1,30,0,"整合运动步兵","",0};
mon[2]={50,50,0,15,10,0,1,30,0,"整合运动弩手","强化射击阿尔法型",0};
mon[3]={100,100,0,25,20,10,1,50,0,"初级武装人员","重击",0};
mon[4]={200,200,0,20,40,25,2,100,1,"高级武装人员","重击PRO",0};
mon[5]={150,150,10,15,20,0,2,100,0,"弩手队长","强化射击阿尔法型",0};
srand((unsigned)time(0));
tx=rand()%20+1;ty=rand()%20+1;player_name=0;
S=0;spadd=10;jn_add=100;logic_Max=225;
}
void pd(int fx,int fy)
{
dx=tx+fx,dy=ty+fy;
if(dx>20 || dx<1 || dy>20 || dy<1) {S=0;return;}
if(logic[dx][dy]>=0)
S=1;
else S=0,tx=dx,ty=dy;
return;
}
void sys_up()
{
int f_Mup;
if(Mup_s[player[player_name].Lv]==0) f_Mup=MMax_up;
else f_Mup=Mup_s[player[player_name].Lv];
while(player[player_name].up>=f_Mup)
{
player[player_name].up-=f_Mup;player[player_name].Lv++;
if(Mup_s[player[player_name].Lv]==0) f_Mup=MMax_up;
else f_Mup=Mup_s[player[player_name].Lv];
bar(0,600,600,700);
setfont(20,0,"");
if(dod<=3) xyprintf(0,600,"从 Lv.%d 提升到了 Lv.%d ! 回复所有生命值!",player[player_name].Lv-1,player[player_name].Lv),player[player_name].hp=player[player_name].Mhp;
else xyprintf(0,600,"从 Lv.%d 提升到了 Lv.%d ! 回复一半的生命值!",player[player_name].Lv-1,player[player_name].Lv),player[player_name].hp+=(player[player_name].Mhp/2),player[player_name].hp=min(player[player_name].hp,player[player_name].Mhp);
getch();
xyprintf(0,620,"生命值上限 攻击力 防御力 上升了!");getch();
xyprintf(0,640,"智慧提升 %d 点",dod);spadd+=dod;getch();
xyprintf(0,660,"技能倍率提高了7%%");jn_add+=7;getch();
player[player_name].Mhp+=20;player[player_name].atc+=3;player[player_name].def+=3;
dod=player[player_name].Lv/2+1;
}
return;
}
void choose_player()
{
for(int i=1;is_run();delay_fps(60))
{
while(kbhit())
{
int ch=getch();
if(ch=='d') i++;
else if(ch=='a') i--;
else if(ch==13) {player_name=i;break;}
if(i>3) i=1;
if(i<1) i=3;
}
if(player_name) break;
cleardevice();putimage(100,50,c[i]);
if(i==1)
{
setfont(30, 30, "宋体");xyprintf(285,20,"W");
setfont(20, 15, "宋体");
xyprintf(0,500," 攻击 :A 防御:C 技能:A 血量:D");
xyprintf(0,0,"A D左右切换 回车选定");
}
else if(i==2)
{
setfont(30, 20, "宋体");xyprintf(250,20,"凯尔希");
setfont(20, 15, "宋体");
xyprintf(0,500," 攻击 :C 防御:C 技能:S 血量:A");
xyprintf(0,530," ※凯尔希的攻击为自己回复血量※");
xyprintf(0,0,"A D左右切换 回车选定");
}
else if(i==3)
{
setfont(30, 20, "宋体");xyprintf(270,20,"炎客");
setfont(20, 15, "宋体");
xyprintf(0,500," 攻击 :A 防御:D 技能:B 血量:S");
xyprintf(0,0,"A D左右切换 回车选定");
}
}
setfont(20,0,"");
cleardevice();xyprintf(0,0,"小贴士:按T可以打开帮助");getch();
logic_print();
return;
}
void rest_print(int m)
{
setfont(20,0,"");
bar(0,600,600,700);
xyprintf(0,600,"请选择一项增益效果");
if(m==1) setbkcolor_f(RED);
xyprintf(0,620,"A.回复所有生命值");setbkcolor(BLACK);
if(m==2) setbkcolor_f(RED);
xyprintf(0,640,"B.获得 %d 点经验",30*dod);setbkcolor(BLACK);
if(m==3) setbkcolor_f(RED);
xyprintf(0,660,"C.智慧提升 %d 点",2*dod),setbkcolor(BLACK);
return;
}
void Game()
{
int sh;
is_0=0;jn_ls=0;
if(logic[dx][dy]==0)
{
logic_print();
getch();
logic[dx][dy]=rand()%4+1;
is_0=1;logic_print();getch();is_0=0;
}
if(logic[dx][dy]==1)
{
int fit_x=0,fit_y=620;
int s_sp=player[player_name].sp,s_Msp=player[player_name].Msp,s_shlx=player[player_name].shlx,s_atc=player[player_name].atc,s_def=player[player_name].def;
srand((unsigned)time(0));
mon_name=mon_Lv[dod][rand()%mon_Lv[dod][0]+1];
mon0=mon[mon_name];
logic_print();getch();
ztl_print();
setfont(20,0,"");
while(1)
{
ztl_print();
fit_x=0;xyprintf(fit_x,fit_y,player[player_name].name);
fit_x+=textwidth(player[player_name].name);
if(player[player_name].sp>=player[player_name].Msp)
{
fit_y=sp_pd(1,fit_x,fit_y);
ztl_print();
if(mon0.hp<=0) break;
}
else
{
xyprintf(fit_x,fit_y," 进行了普通攻击!");getch();
//fit_x+=textwidth(" 进行了普通攻击 ");
fit_y+=20;fit_x=0;
if(fit_y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),fit_y=680;
if(!jn_ls)
{
player[player_name].sp+=spadd;
xyprintf(fit_x,fit_y,"回复了 %dsp",spadd);
fit_y+=20;fit_x=0;
if(fit_y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),fit_y=680;
getch();
}
ztl_print();
if(player[player_name].shlx==0) sh=max((int)(player[player_name].atc*0.1),player[player_name].atc-mon0.def);
else sh=player[player_name].atc;
if(player[player_name].shlx!=3) xyprintf(fit_x,fit_y,"造成了 %d 点伤害",sh),mon0.hp-=sh,ztl_print();
else xyprintf(fit_x,fit_y,"治疗了 %d 点血量",sh),player[player_name].hp+=sh,player[player_name].hp=min(player[player_name].hp,player[player_name].Mhp),ztl_print();
if(jn_ls!=0) jn_ls--;
if(jn_ls==0)
{
player[player_name].def=s_def;
player[player_name].atc=s_atc;
player[player_name].shlx=s_shlx;
}
else if(player_name==2)
{
player[player_name].shlx=s_shlx;
player[player_name].def=s_def;
player[player_name].atc=s_atc;
}
if(mon0.hp<=0) break;
getch();
fit_y+=20;fit_x=0;
if(fit_y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),fit_y=680;
}
if(mon0.Mup<0)
{
fit_x=0;xyprintf(fit_x,fit_y,mon0.name);
fit_x+=textwidth(mon0.name);
xyprintf(fit_x,fit_y," 被眩晕!本回合跳过!");
getch();
mon0.Mup++;
fit_y+=20;fit_x=0;
if(fit_y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),fit_y=680;
}
else
{
bool flag=0;
while(mon0.Msp>0 && mon0.sp>=mon0.Msp)
{
flag=1;
fit_x=0;xyprintf(fit_x,fit_y,mon0.name);
fit_x+=textwidth(mon0.name);
fit_y=sp_pd(2,fit_x,fit_y);
ztl_print();
if(player[player_name].hp<=0) {cleardevice();setcolor(RED);setfont(30,0,"");xyprintf(0,0,"YOU LOSE!");getch();setcolor(LIGHTGRAY);map();first();choose_player();return;}
}
if(flag) continue;
fit_x=0;xyprintf(fit_x,fit_y,mon0.name);
fit_x+=textwidth(mon0.name);
xyprintf(fit_x,fit_y," 进行了普通攻击!");getch();
//fit_x+=textwidth(" 进行了普通攻击 ");
fit_y+=20;fit_x=0;
if(fit_y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),fit_y=680;
if(mon0.Msp)
{
xyprintf(fit_x,fit_y,"回复了 10sp");ztl_print();getch();
mon0.sp+=10;
fit_y+=20;fit_x=0;
if(fit_y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),fit_y=680;
}
sh=max((int)(mon0.atc*0.1),mon0.atc-player[player_name].def);
xyprintf(fit_x,fit_y,"造成了 %d 点伤害",sh);player[player_name].hp-=sh;ztl_print();
if(player[player_name].hp<=0) break;
getch();
fit_y+=20;fit_x=0;
if(fit_y==700) getimage(tt,0,640,600,60),bar(0,680,600,700),putimage(0,620,tt),fit_y=680;
}
}
if(player[player_name].hp<=0) {cleardevice();setcolor(RED);setfont(30,0,"");xyprintf(0,0,"YOU LOSE!");getch();setcolor(LIGHTGRAY);map();first();choose_player();return;}
else
{
player[player_name].def=s_def;
player[player_name].atc=s_atc;
player[player_name].sp=s_sp;
player[player_name].Msp=s_Msp;
player[player_name].shlx=s_shlx;
bar(0,600,600,700);
setcolor(RED);setfont(30,0,"");xyprintf(0,600,"战胜了 %s !",mon0.name);setcolor(LIGHTGRAY);getch();
bar(0,600,600,700);
xyprintf(0,600,"获得了 %d 点经验值!",mon0.up);player[player_name].up+=mon0.up;getch();
sys_up();
}
}
else
{
if(logic[dx][dy]==2)
{
int tP=1;
logic_print();
rest_print(tP);
for(;is_run();delay_fps(60))
{
rest_print(tP);
while(kbhit())
{
int ch=getch();
if(ch=='s') tP++;
else if(ch=='w') tP--;
else if(ch==13)
{
bar(0,600,600,700);
setfont(30,0,"");
if(tP==1) {xyprintf(0,600,"回复了所有生命值!");getch();player[player_name].hp=player[player_name].Mhp;}
else if(tP==2) {xyprintf(0,600,"获得了 %d 点经验值!",30*dod);player[player_name].up+=(30*dod);getch();sys_up();}
else if(tP==3) {xyprintf(0,600,"提升了智慧!");spadd+=(dod*2);getch();}
logic[dx][dy]=-1;tx=dx;ty=dy;return;
}
if(tP<1) tP=3;
if(tP>3) tP=1;
}
}
}
else if(logic[dx][dy]==3)
{
bar(0,600,600,700);
setfont(30,0,"");
xyprintf(0,600,"巫师正在训练。。。");Sleep(500);
xyprintf(0,600,"巫师正在训练。。。。。。");Sleep(500);bar(0,600,600,700);
xyprintf(0,600,"巫师正在训练。。。");Sleep(500);
if(rand()%100<70) setcolor(LIGHTBLUE),xyprintf(0,600,"技能训练Lv.1 提升了技能倍率 +5%%!"),jn_add+=5;
else if(rand()%100<50) setcolor(LIGHTPINK),xyprintf(0,600,"技能训练Lv.2 提升了技能倍率 +7%%!"),jn_add+=7;
else setcolor(RED),xyprintf(0,600,"技能训练Lv.3 提升了技能倍率 +10%%!"),jn_add+=10;
setcolor(LIGHTGRAY);getch();
}
else
{
bar(0,600,600,700);
setfont(20,0,"");
}
}
}
int main()
{
char p[10]="0.png";
char pp[10]="c0.png";
initgraph(600, 700,INIT_NOFORCEEXIT);
first();
for(int i=0;i<=4;i++)
{
p[0]=(char)(i+48);
what[i]=newimage();
getZoomImage(what[i],p,30,30);
//putimage(0,0,what[i]);getch();
}
for(int i=1;i<=3;i++)
{
c[i]=newimage();
pp[1]=(char)(i+48);
getZoomImage(c[i],pp,400,400);
//putimage(100,100,c[i]);getch();
}
w_jxhz=newimage();
k_zlrh=newimage();
y_sx=newimage();
getZoomImage(w_jxhz,"w_jxhz.png",30,30);
getZoomImage(k_zlrh,"k_zlrh.png",30,30);
getZoomImage(y_sx,"y_sx.png",30,30);
map();
choose_player();
for(;is_run();delay_fps(30))
{
bool flag=0;
bool flag2;
if(S==2 && getch()) {S=0;logic_print();continue;}
while(!S && kbhit())
{
int ch=getch();
switch(ch)
{
case 'd':
flag=1;pd(1,0);break;
case 'a':
flag=1;pd(-1,0);break;
case 's':
flag=1;pd(0,1);break;
case 'w':
flag=1;pd(0,-1);break;
case 't':
flag=1;S=2;break;
case 'j':
flag=1;is_jn=!is_jn;break;
}
}
if(flag) logic_print();
if(S==1)
{
flag=1;i2=1;
logic_print();
while(flag)
{
while(kbhit())
{
int ch=getch();
if(ch=='a' || ch=='d') i2=-i2,logic_print();
else if(ch==13)
{
if(i2==-1) {S=0;flag=0;break;}
else {S=3;Game();logic[dx][dy]=-1;tx=dx;ty=dy;logic_Max--;flag=0;S=0;break;}
}
}
}
logic_print();
}
}
return 0;
}
方舟肉鸽-持续更新。。。
于 2022-07-26 11:24:28 首次发布