コード:
//main.cpp
#include "DxLib.h" //キャラとの判定が完成
#include"Kansu.h"
#include"defines.h"
#include"kouzou.h"
int Pad;
int Font02 = CreateFontToHandle( "MS ゴシック", 19, 6 , DX_FONTTYPE_NORMAL) ;
int iro=GetColor(140,70,70),cro=GetColor(70,50,50);
short joutai=0/*メニューかプレイか*/,oomot=0/**/,mapnm=0/*マップナンバー*/;
short keyflag[28];
struct Teki zako[31];//敵
short Mapy,Mapx,Mapx2,Mapy2;
short ruseizon=1;
short num=1;
short hirosa;
char map[50+1][70+1];
char map2[50+1][70+1];
struct Dam Dod[DMAX+1];//攻撃判定
struct Ndam Nod[DMAX+1];
short ndnum,dnum,tnum;//攻撃判定などの番号
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE),DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
int Font;
int Sx=0 , Sy=0 , Cb=0 ;
Font=CreateFontToHandle( "MS ゴシック", 50, 9, DX_FONTTYPE_NORMAL );
// while(裏画面を表画面に反映, メッセージ処理, 画面クリア)
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
short don=0;
Keytxt();
if(joutai==0){
//printfDx("%d",Once(2));
GetScreenState( &Sx , &Sy , &Cb ) ;
DrawBox(0,0,1000,700,GetColor( 150,10,5 ), TRUE );
DrawStringToHandle( 100 , 200 , "スタート" , GetColor( 2 , 2 , 20 ) , Font ) ;
DrawFormatStringToHandle( 200 , 400 , GetColor( 200 , 0 , 255 ) ,Font,"%d,%d,%d",Sx , Sy , Cb ) ;
if(Pad&(1<<9)){
joutai=1;
}
}//メニュー画面
else if(joutai==1)
{
//Ndsyoki();
ndnum=0;//判定番号初期化
tnum=0;
//printfDx("%d",ruseizon);
if(ruseizon==1){
MapDraw();
Syujou();
Action();
Mitame();
tAction(240,350,0,20);
tMitame();
Syudam();
Nredam();
Ndcount();
}
else if(ruseizon==0)
{Shibou();}
}
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}
//dkan.cpp
#include "DxLib.h"
#include"Kansu.h"
#include"defines.h"
#include"kouzou.h"
extern struct Dam Dod[DMAX]; //過去の遺物
extern struct Ndam Nod[DMAX];
extern struct Teki zako[30];
extern short ndnum;
extern short tnum;
extern int cro;
static short ndnow;
short Ndhan(short hited)
{short re=0;
for(short hit=0;hit<=ndnow;hit++){
if(Nod[hit].x>=zako[hited].x-24 && Nod[hit].x<=zako[hited].x+24 && Nod[hit].y>=zako[hited].y-32 && Nod[hit].y<=zako[hited].y+32 )
{
re=Nod[hit].iryok;
Nod[hit].nokori=0;
break;
} //当たってる
}
return re;
}
short Nsyuhan(double ux,double uy) //1フレームに一つ(最初)の判定しか処理できない!
{short re=0;
short hit;
for(hit=0;hit<=ndnow;hit++){
if(Nod[hit].x>=ux-24 && Nod[hit].x<=ux+24 && Nod[hit].y>=uy-32 && Nod[hit].y<=uy+32 )
{
re=Nod[hit].iryok;
Nod[hit].nokori=0;
break;} //当たってるdamege
}
return re;
}
void Nredam()
{
for(short hit=0;hit<=ndnow;hit++)
{ Nod[hit].nokori--;
if(Nod[hit].nokori<=0){
Nod[hit].x=0;
Nod[hit].y=0;
Nod[hit].sx=0;
Nod[hit].sy=0;
Nod[hit].iryok=0;}
else
{
Nod[hit].x+=Nod[hit].sx;
Nod[hit].y+=Nod[hit].sy;
}
}
}
void Tsyoki()
{ tnum=0;
for(short i=0;i<=30;i++)
{if(zako[i].hp>0)
{tnum++;}
else
{break;}
}
}
short Ndplus()
{ while(Nod[ndnum].nokori>=1 && ndnum<=DMAX-1)
{
ndnum++;
}
return 0;
}
short Ndmake(double x,double y,double sx,double sy,short iryok,short nokori)
{short limit=0;
while(Nod[ndnum].nokori>=1)
{
if(ndnum<=DMAX-1)
{ndnum++;}
else
{limit=1;
break;
}
}
if(limit==0) //配列が限界でないときのみ
{Nod[ndnum].x=x; //書き込み
Nod[ndnum].y=y;
Nod[ndnum].sx=sx;
Nod[ndnum].sy=sy;
Nod[ndnum].iryok=iryok;
Nod[ndnum].nokori=nokori;
}
return limit;
}
short Ndcount()
{static short ndmax;
if(ndnum>=ndmax+1)
{
ndmax=ndnum;
}
while(Nod[ndmax].nokori<=0 && ndmax>=1)
{ndmax--;}
ndnow=ndmax;
DrawFormatString(100,100,cro,"%d",ndnow);
return 0;
}
//syukan.cpp
#include"DxLib.h" //キャラとの判定が完成
#include <math.h>
#include"Kansu.h"
#include"defines.h"
#include"Kouzou.h"
extern char map[50+1][70+1]; //少し多めに
extern char map2[50+1][70+1];
extern short keyflag[28];
extern short joutai;
extern struct Ndam Nod[DMAX];
extern short ndnum;
extern int Font02;
extern int iro,cro;
int image[48];
int imageb[48];
int imagez[10];
static int haikei[16];
double rux=400;
int ruSx,ruSy;
double rugx,rugy;
double ruy=200;
short ruhp=20;
short ruFlag;
short ruimg;
short rujou;
short rubujou=0;
short ruijou;
double ruoldx;
double ruoldy;
short ruiFlag=1;
extern short ruseizon;
short afle;
short bflag;
int Action()
{
ruoldx=rux;
ruoldy=ruy;
int kiju=Sic*8+1;
int naju=Nac*8+1;
if(rubujou==0)//武器状態
{ switch(ruijou)//移動状態
{
case 0://とまり中
ruiFlag=0;
if(rugx>Kas)
{rugx-=Kas;}
else if(rugx*(-1)>Kas)
{rugx+=Kas;}//全て加速関係
else
{rugx=0;}//xを減速
if(rugy>Kas)
{rugy-=Kas;}
else if(rugy*(-1)>Kas)
{rugy+=Kas;}
else
{rugy=0;}
break;
case 1://動き中
ruiFlag=1;
switch(ruFlag)//方向開始
{
case 0:
rugy+=Kas;
if(keyflag[9]==0){
if(rugy>Ri)
{rugy=Ri;}
}
else if(keyflag[9]==1){
if(rugy>Ri*Da)
{rugy=Ri*Da;}
}
if(rugx<-Bkas)
{rugx+=Bkas;}
else if(rugx>Bkas)
{rugx-=Bkas;}
else{rugx=0;}
break;
case 1:
rugx-=Kas;
if(keyflag[9]==0){
if(rugx*(-1)>Ri)
{rugx=-Ri;}}
else{
if(rugx*(-1)>Ri*Da)
{rugx=-Ri*Da;} }
if(rugy<-Bkas)
{rugy+=Bkas;}
else if(rugy>Bkas)
{rugy-=Bkas;}
else{rugy=0;}
break;
case 2:
rugx+=Kas;
if(keyflag[9]==0){
if(rugx>Ri)
{rugx=Ri;}
}
else{
if(rugx>Ri*Da)
{rugx=Ri*Da;}
}
if(rugy<-Bkas)
{rugy+=Bkas;}
else if(rugy>Bkas)
{rugy-=Bkas;}
else{rugy=0;}
break;
case 3:
rugy-=Kas;
if(keyflag[9]==0){
if(rugy*(-1)>Ri)
{rugy=-Ri;} }
else{
if(rugy*(-1)>Ri*Da)
{rugy=-Ri*Da;} }
if(rugx<-Bkas)
{rugx+=Bkas;}
else if(rugx>Bkas)
{rugx-=Bkas;}
else{rugx=0;}
break;
case 4:
rugy+=Kas*Nana;
rugx-=Kas*Nana;
if(keyflag[9]==0){
if(rugy>Ri*Nana)
{rugy=Ri*Nana; }
if(rugx*(-1)>Ri*Nana)
{
rugx=-Ri*Nana;
}
}
else{
if(rugy>Ri*Nana*Da)
{if(rugy>Ri*Nana*Da+Kas*Nana*Da)
{rugy-=Kas*Nana*Da;}
else{rugy=Ri*Nana*Da;}
}
if(rugx*(-1)>Ri*Nana*Da)
{if(rugx*(-1)>Ri*Nana*Da+Kas*Nana*Da)
{rugx+=Kas*Nana*Da; }
else{rugx=-Ri*Nana*Da;} } } break;
case 6:
rugy-=(Kas)*Nana;
rugx-=(Kas)*Nana;
if(keyflag[9]==0){
if(rugy*(-1)>Ri*Nana)
{ rugy=-(Ri)*Nana;
}
if(rugx*(-1)>Ri*Nana)
{ rugx=-(Ri)*Nana; } }
else{
if(rugy*(-1)>Ri*Nana*Da)
{ rugy=-(Ri)*Nana*Da;
}
if(rugx*(-1)>Ri*Nana*Da)
{
rugx=-Ri*Nana*Da; } } break;
case 5:
rugy+=(Kas)*Nana;
rugx+=(Kas)*Nana;
if(keyflag[9]==0){
if(rugy>Ri*Nana)
{ rugy=Ri*Nana;
}
if(rugx>Ri*Nana)
{ rugx=Ri*Nana;
} }
else{
if(rugy>Ri*Nana*Da)
{ rugy=Ri*Nana*Da;
}
if(rugx>Ri*Nana*Da)
{
rugx=Ri*Nana*Da;}
} break;
case 7:
rugy-=(Kas)*Nana;
rugx+=(Kas)*Nana;
if(keyflag[9]==0){
if(rugy*(-1)>Ri*Nana)
{ rugy=-Ri*Nana;
}
if(rugx>Ri*Nana)
{
rugx=Ri*Nana;
}
}
else{
if(rugy*(-1)>Ri*Nana*Da)
{ rugy=-Ri*Nana*Da;
}
if(rugx>Ri*Nana*Da)
{ rugx=Ri*Nana*Da;
} } break;
}/*方向終わり*/ break;
} }
else if(rubujou==1)
{ switch(ruijou)//移動状態
{
case 0://とまり中
ruiFlag=0;
if(rugx>Kas)
{rugx-=0.5;}
else if(rugx*(-1)>Kas)
{rugx+=0.5;}
else
{rugx=0;}//xを減速
if(rugy>Kas)
{rugy-=Kas;}
else if(rugy*(-1)>Kas)
{rugy+=Kas;}
else
{rugy=0;}
break;
case 1://動き中
ruiFlag=1;
switch(ruFlag)//方向開始
{
case 0:
rugy+=Kas;
if(rugy>Ri)
{rugy=Ri;}
if(rugx<-Bkas)
{rugx+=Bkas;}
else if(rugx>Bkas)
{rugx-=Bkas;}
else{rugx=0;}
break;
case 1:
rugx-=Kas;
if(rugx*(-1)>Ri)
{rugx=-Ri;}
if(rugy<-Bkas)
{rugy+=Bkas;}
else if(rugy>Bkas)
{rugy-=Bkas;}
else{rugy=0;}
break;
case 2:
rugx+=Kas;
if(rugx>Ri)
{rugx=Ri;}
if(rugy<-Bkas)
{rugy+=Bkas;}
else if(rugy>Bkas)
{rugy-=Bkas;}
else{rugy=0;}
break;
case 3:
rugy-=Kas;
if(rugy*(-1)>Ri)
{rugy=-Ri;}
if(rugx<-Bkas)
{rugx+=Bkas;}
else if(rugx>Bkas)
{rugx-=Bkas;}
else{rugx=0;}
break;
case 4:
rugy+=Kas*Nana;
rugx-=Kas*Nana;
if(rugy>Ri*Nana)
{if(rugy>Ri*Nana+Kas*Nana){
rugy-=Ri*Nana;
}
else{rugy=Ri*Nana;} }
if(rugx*(-1)>Ri*Nana)
{if(rugx*(-1)>Ri*Nana+Kas*Nana)
{rugx+=Kas*Nana;}
else{rugx=-Ri*Nana;} }
break;
case 6:
rugy-=(Kas)*Nana;
rugx-=(Kas)*Nana;
if(rugy*(-1)>Ri*Nana)
{ rugy=-(Ri)*Nana;
}
if(rugx*(-1)>Ri*Nana)
{ rugx=-(Ri)*Nana; }
break;
case 5:
rugy+=(Kas)*Nana;
rugx+=(Kas)*Nana;
if(rugy>Ri*Nana)
{ rugy=Ri*Nana;
}
if(rugx>Ri*Nana)
{ rugx=Ri*Nana;
}
break;
case 7:
rugy-=(Kas)*Nana;
rugx+=(Kas)*Nana;
if(rugy*(-1)>Ri*Nana)
{ rugy=-Ri*Nana;
}
if(rugx>Ri*Nana)
{
rugx=Ri*Nana;}
break;
}/*方向終わり*/ break;
case 2:
ruiFlag=1;
afle++;
if(afle==Yari)
{switch(ruFlag)
{ case 0:
Ndmake(rux,ruy+40,0,5+rugy,4,3);
break;
case 1:
Ndmake(rux-30,ruy,-5+rugx,0,4,3);
break;
case 2:
Ndmake(rux+40,ruy, 5+rugx,0,4,3);
break;
case 3:
Ndmake(rux,ruy-40,0,-5+rugy,4,3);
break;
case 4:
Ndmake(rux-25,ruy+35,-3.5+rugx,3.5+rugy,4,3);
break;
case 5:
Ndmake(rux+25,ruy-35,3.5+rugx,-3.5+rugy,4,3);
break;
case 6:
Ndmake(rux-25,ruy-35,-3.5+rugx,-3.5+rugy,4,3);
break;
case 7:
Ndmake(rux-25,ruy-35,3.5+rugx,-3.5+rugy,4,3);
break;
}
Nod[ndnum].iryok=4;
Nod[ndnum].nokori=2;
Ndplus();
}
else if(afle>=mia3 )
{afle=0;}
break;
}//攻撃判定処理
}
if(MapGim(rux+rugx-15,ruy+rugy+30)-MapGim(rux-15,ruy+30)>=2) //左下
{ rugy=0;
rugx=0;
}
if(MapGim(rux+rugx+15,ruy+rugy+30)-MapGim(rux+15,ruy+30)>=2) //右下
{ rugy=0;
rugx=0;
}
else if(MapGim(rux+rugx-15,ruy+rugy-5)-MapGim(rux-15,ruy-5)>=2) //左上
{ rugy=0;
rugx=0;
}
if(MapGim(rux+rugx+15,ruy+rugy-5)-MapGim(rux+15,ruy-5)>=2) //右上
{ rugy=0;
rugx=0;
}
rux+=rugx;
ruy+=rugy;
return 0;
} //ここまでAction
void Mitame()
{ static short reF=0;
short kiju;
short naju;
short kiju1;
short naju1;
ruSx=Seisu(rux);
ruSy=Seisu(ruy);
kiju=Sic*8+1;
naju=Nac*8+1;
kiju1=Sic*4+1;
naju1=Nac*4+1;
Hgage();
if(reF==0){
LoadDivGraph( "EDGE1.news.png" , 40 , 8 , 5 , 48 , 64 , image ); // 画像の分割読み込み
LoadDivGraph( "EDGE1.zatuyou.png",3, 3 ,1, 64, 64, imagez);
LoadDivGraph( "EDGE1.newsbuki.png" , 40 , 8 , 4 , 80 , 80 , imageb );
reF=1;}
switch(rubujou){
case 0:
switch(ruijou)//移動状態
{
case 0://sei
if(ruFlag==0||ruFlag==1||ruFlag==2||ruFlag==3)
{ rujou=ruFlag; }
else if(ruFlag==4||ruFlag==7)
{ rujou=ruFlag+16; }
else if(ruFlag==5)
{rujou=22;}
else if(ruFlag==6)
{rujou=21;}
break;
case 1://dou
if(rugx==0 && rugy==0)
{if(ruFlag==0||ruFlag==1||ruFlag==2||ruFlag==3)
{ rujou=ruFlag; }
else if(ruFlag==4||ruFlag==7)
{ rujou=ruFlag+16; }
else if(ruFlag==5)
{rujou=22;}
else if(ruFlag==6)
{rujou=21;} }
else{
switch(ruFlag)
{
case 0:
if(keyflag[9]==0){
if(Sic<=ruSy%kiju1 && ruSy%kiju1<Sic*2){
rujou=4;}//足伸びきり
else if(Sic*3<=ruSy%kiju1 && ruSy%kiju1<Sic*4){
rujou=5;}
else{
rujou=0;}
if(rugy>Ri)
{rugy=Ri;}
}
else if(keyflag[9]==1){
if(Sic<=ruSy%kiju && ruSy%kiju<Sic*2){
rujou=4;}
else if(Sic*2<=ruSy%kiju && ruSy%kiju<Sic*3){
rujou=12;}
else if(Sic*3<=ruSy%kiju && ruSy%kiju<Sic*4){
rujou=4;}
else if((Sic*5<=ruSy%kiju && ruSy%kiju<Sic*6)||(Sic*7<=ruSy%kiju && ruSy%kiju<Sic*8)){
rujou=5;}
else if(Sic*6<=ruSy%kiju && ruSy%kiju<Sic*7){
rujou=13;}
else{
rujou=0;}
}
break;
case 1:
if(keyflag[9]==0){
if(Sic<=ruSx%kiju1 && ruSx%kiju1<Sic*2){
rujou=7;}
else if(Sic*3<=ruSx%kiju1 && ruSx%kiju1<Sic*4){
rujou=6;}
else{
rujou=1;}
}
else{
if((Sic<=ruSx%kiju && ruSx%kiju<Sic*2)||(Sic*3<=ruSx%kiju && ruSx%kiju<Sic*4)){
rujou=7;}//歩き
else if(Sic*2<=ruSx%kiju && ruSx%kiju<Sic*3){
rujou=15;}
else if((Sic*5<=ruSx%kiju && ruSx%kiju<Sic*6)||(Sic*7<=ruSx%kiju && ruSx%kiju<Sic*8)){
rujou=6;}//歩き
else if(Sic*6<=ruSx%kiju && ruSx%kiju<Sic*7){
rujou=14;}
else{
rujou=1;}
}
break;
case 2:
if(keyflag[9]==0){
if(Sic<=ruSx%kiju1 && ruSx%kiju1<Sic*2){
rujou=8;}
else if(Sic*3<=ruSx%kiju1 && ruSx%kiju1<Sic*4){
rujou=9;}
else{
rujou=2;}
}
else{
if((Sic<=ruSx%kiju && ruSx%kiju<Sic*2)||(Sic*3<=ruSx%kiju && ruSx%kiju<Sic*4)){
rujou=8;}//歩き
else if(Sic*2<=ruSx%kiju && ruSx%kiju<Sic*3){
rujou=18;}
else if((Sic*5<=ruSx%kiju && ruSx%kiju<Sic*6)||(Sic*7<=ruSx%kiju && ruSx%kiju<Sic*8)){
rujou=9;}//歩き
else if(Sic*6<=ruSx%kiju && ruSx%kiju<Sic*7){
rujou=19;}
else{
rujou=2;}
}
break;
case 3:
if(keyflag[9]==0){
if(Sic<=ruSy%kiju1 && ruSy%kiju1<Sic*2){
rujou=10;}
else if(Sic*3<=ruSy%kiju1 && ruSy%kiju1<Sic*4){
rujou=11;}
else{
rujou=3;}
}
else{
if((Sic<=ruSy%kiju && ruSy%kiju<Sic*2)||(Sic*3<=ruSy%kiju && ruSy%kiju<Sic*4)){
rujou=10;}//歩き
else if(Sic*2<=ruSy%kiju && ruSy%kiju<Sic*3){
rujou=16;}
else if((Sic*5<=ruSy%kiju && ruSy%kiju<Sic*6)||(Sic*7<=ruSy%kiju && ruSy%kiju<Sic*8)){
rujou=11;}//歩き
else if(Sic*6<=ruSy%kiju && ruSy%kiju<Sic*7){
rujou=17;}
else{
rujou=3;}
}
break;
case 4:
if(keyflag[9]==0){
if(Nac<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*2){
rujou=31;}
else if(Nac*3<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*4){
rujou=30;}
else{
rujou=20;}
}
else{
if((Nac<=ruSy%naju && ruSy%naju<Nac*2)||(Nac*3<=ruSy%naju && ruSy%naju<Nac*4)){
rujou=30;}//歩き
else if(Nac*2<=ruSy%naju && ruSy%naju<Nac*3){
rujou=26;}
else if((Nac*5<=ruSy%naju && ruSy%naju<Nac*6)||(Nac*7<=ruSy%naju && ruSy%naju<Nac*8)){
rujou=31;}//歩き
else if(Nac*6<=ruSy%naju && ruSy%naju<Nac*7){
rujou=27;}
else{
rujou=20;}
} break;
case 6:
if(keyflag[9]==0){
if(Nac<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*2){
rujou=24;}
else if(Nac*3<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*4){
rujou=25;}
else{
rujou=21;}
}
else{
if((Nac<=ruSy%naju && ruSy%naju<Nac*2)||(Nac*3<=ruSy%naju && ruSy%naju<Nac*4)){
rujou=24;}//歩き
else if(Nac*2<=ruSy%naju && ruSy%naju<Nac*3){
rujou=28;}
else if((Nac*5<=ruSy%naju && ruSy%naju<Nac*6)||(Nac*7<=ruSy%naju && ruSy%naju<Nac*8)){
rujou=25;}//歩き
else if(Nac*6<=ruSy%naju && ruSy%naju<Nac*7){
rujou=29;}
else{
rujou=21;}
} break;
case 5:
if(keyflag[9]==0){
if(Nac<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*2){
rujou=32;}
else if(Nac*3<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*4){
rujou=33;}
else{
rujou=22;}
}
else{
if((Nac<=ruSy%naju && ruSy%naju<Nac*2)||(Nac*3<=ruSy%naju && ruSy%naju<Nac*4)){
rujou=32;}//歩き
else if(Nac*2<=ruSy%naju && ruSy%naju<Nac*3){
rujou=34;}
else if((Nac*5<=ruSy%naju && ruSy%naju<Nac*6)||(Nac*7<=ruSy%naju && ruSy%naju<Nac*8)){
rujou=33;}//歩き
else if(Nac*6<=ruSy%naju && ruSy%naju<Nac*7){
rujou=35;}
else{
rujou=22;}
} break;
case 7:
if(keyflag[9]==0){
if(Nac<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*2){
rujou=36;}
else if(Nac*3<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*4){
rujou=37;}
else{
rujou=23;}
}
else{
if((Nac<=ruSy%naju && ruSy%naju<Nac*2)||(Nac*3<=ruSy%naju && ruSy%naju<Nac*4)){
rujou=36;}//歩き
else if(Nac*2<=ruSy%naju && ruSy%naju<Nac*3){
rujou=38;}
else if((Nac*5<=ruSy%naju && ruSy%naju<Nac*6)||(Nac*7<=ruSy%naju && ruSy%naju<Nac*8)){
rujou=37;}//歩き
else if(Nac*6<=ruSy%naju && ruSy%naju<Nac*7){
rujou=39;}
else{
rujou=23;}
} break;
}break; }
}
break;
/*rubujou1*/
case 1:
switch(ruijou)//移動状態
{
case 0:
if(ruFlag==0||ruFlag==1||ruFlag==2||ruFlag==3)
{ rujou=ruFlag; }
else if(ruFlag==4||ruFlag==5||ruFlag==6||ruFlag==7)
{ rujou=ruFlag+8; }
break;
case 1:
switch(ruFlag)
{
case 0:
if(Sic<=ruSy%kiju1 && ruSy%kiju1<Sic*2){
rujou=4;}//足伸びきり
else if(Sic*3<=ruSy%kiju1 && ruSy%kiju1<Sic*4){
rujou=5;}
else{
rujou=0;}
break;
case 1:
if(Sic<=ruSx%kiju1 && ruSx%kiju1<Sic*2){
rujou=7;}
else if(Sic*3<=ruSx%kiju1 && ruSx%kiju1<Sic*4){
rujou=6;}
else{
rujou=1;}
break;
case 2:
if(Sic<=ruSx%kiju1 && ruSx%kiju1<Sic*2){
rujou=8;}
else if(Sic*3<=ruSx%kiju1 && ruSx%kiju1<Sic*4){
rujou=9;}
else{
rujou=2;}
break;
case 3:
if(Sic<=ruSy%kiju1 && ruSy%kiju1<Sic*2){
rujou=10;}
else if(Sic*3<=ruSy%kiju1 && ruSy%kiju1<Sic*4){
rujou=11;}
else{
rujou=3;}
break;
case 4:
if(Nac<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*2){
rujou=17;}
else if(Nac*3<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*4){
rujou=16;}
else{
rujou=12;}
break;
case 6:
if(Nac<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*2){
rujou=21;}
else if(Nac*3<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*4){
rujou=20;}
else{
rujou=14;}
break;
case 5:
if(Nac<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*2){
rujou=19;}
else if(Nac*3<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*4){
rujou=18;}
else{
rujou=13;}
break;
case 7:
if(Nac<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*2){
rujou=23;}
else if(Nac*3<=ruSy%(Nac*4+1) && ruSy%(Nac*4+1)<Nac*4){
rujou=22;}
else{
rujou=15;}
break;
}
break;/*のハズ*/
case 2:
switch(ruFlag)
{ case 0:
if(afle>=1 && afle<=mia1)
{rujou=4;}
else if(afle>mia1 && afle<=mia2)
{rujou=24;}
else if(afle>mia2 && afle<=mia3)
{rujou=4;}
break;
case 1:
if(afle>=1 && afle<=mia1)
{rujou=7;}
else if(afle>mia1 && afle<=mia2)
{rujou=25;}
else if(afle>mia2 && afle<=mia3)
{rujou=7;}
break;
case 2:
if(afle>=1 && afle<=mia1)
{rujou=8;}
else if(afle>mia1 && afle<=mia2)
{rujou=26;}
else if(afle>mia2 && afle<=mia3)
{rujou=8;}
break;
case 3:
if(afle>=1 && afle<=mia1)
{rujou=11;}
else if(afle>mia1 && afle<=mia2)
{rujou=27;}
else if(afle>mia2 && afle<=mia3)
{rujou=11;}
break;
case 4:
if(afle>=1 && afle<=mia1)
{rujou=17;}
else if(afle>mia1 && afle<=mia2)
{rujou=28;}
else if(afle>mia2 && afle<=mia3)
{rujou=17;}
break;
case 5:
if(afle>=1 && afle<=mia1)
{rujou=19;}
else if(afle>mia1 && afle<=mia2)
{rujou=29;}
else if(afle>mia2 && afle<=mia3)
{rujou=19;}
break;
case 6:
if(afle>=1 && afle<=mia1)
{rujou=20;}
else if(afle>mia1 && afle<=mia2)
{rujou=30;}
else if(afle>mia2 && afle<=mia3)
{rujou=20;}
break;
case 7:
if(afle>=1 && afle<=mia1)
{rujou=22;}
else if(afle>mia1 && afle<=mia2)
{rujou=31;}
else if(afle>mia2 && afle<=mia3)
{rujou=22;}
break;
}
break;}//ruijou
break; }//rubujou
SetDrawBlendMode(DX_BLENDMODE_MULA,200);
DrawGraph(320-32,240-30,imagez[0],TRUE);//影
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,100);
if(rubujou==0){
DrawGraph( 320-24, 240-32, image[rujou] , TRUE ); } // 操作キャラを表示
else if(rubujou==1){
DrawGraph( 320-40, 240-40, imageb[rujou] , TRUE ); }
DrawBox(320-3,240-3,320+3,240+3,GetColor(250,250,250),TRUE);
}//ここまでmitame
short Syudam()
{
if(Nsyuhan(rux,ruy)>0)
{ruhp-=Nsyuhan(rux,ruy); }
return 0;
}
short Syujou()
{ if(ruhp<=0)
{ruseizon=0;}
if(keyflag[1]==1)
{if(keyflag[0]==1)
{ruFlag=4;}
else if(keyflag[3]==1)
{ruFlag=6;}
else
{ruFlag=1;}
}
else if(keyflag[2]==1)
{if(keyflag[0]==1)
{ruFlag=5;}
else if(keyflag[3]==1)
{ruFlag=7;}
else
{ruFlag=2;}
}
else if(keyflag[0]==1)
{if(keyflag[1]==1)
{ruFlag=4;}
else if(keyflag[2]==1)
{ruFlag=5;}
else
{ruFlag=0;} }
else if(keyflag[3]==1)
{if(keyflag[1]==1)
{ruFlag=6;}
else if(keyflag[2]==1)
{ruFlag=7;}
else
{ruFlag=3;} }
switch(rubujou)//武器状態変化
{ case 0:
if(Once(6)==1)
{ bflag=1; }
break;
case 1:
if(Once(6)==1 && afle==0)
{ bflag=0;}
break;
}
if(bflag==0)
{rubujou=0;}
else if(bflag==1)
{rubujou=1;}
switch(ruijou)//移動状態変化
{ case 0:
if(keyflag[0]==1||keyflag[1]==1||keyflag[2]==1||keyflag[3]==1 )
{ruijou=1;}
if(Once(5)==1 && rubujou==1 || afle<0)
{ruijou=2;}
break;
case 1:
if(keyflag[0]==0 && keyflag[1]==0 && keyflag[2]==0 && keyflag[3]==0)
{ruijou=0;}
if(Once(5)==1 && rubujou==1)
{ruijou=2;}
break;
case 2:
if(afle==0)
{ruijou=0;}
break;
}
//変化終わり
return 0;
}
void Shibou()
{DrawFormatStringToHandle(20,50,iro,Font02,"ざんねん!わたしの ぼうけんは これで おわってしまった!");
if(Once(9)==1)
{ruseizon=1;
ruhp=20;
rux=300;
ruy=200;
rugx=0;
rugy=0;
}
else if(Once(4)==1)
{joutai=0;}}
short Hgage(){
DrawBox(30,10,30+ruhp*20,40,cro,TRUE);
return 0;
}
//tekikan.cpp
#include"DxLib.h"
#include"Kansu.h"
#include"defines.h"
#include"kouzou.h"
extern char map[50+1][70+1]; //少し多めに
extern short keyflag[28];
extern struct Ndam Nod[DMAX];
extern struct Teki zako[30];
extern short ndnum;
extern short tnum;
extern int cro;
static int image[48];
short tAction(double x,double y,short pat,short hp)
{static short lr=0;
if(zako[tnum].shoki==0)
{zako[tnum].x=x;
zako[tnum].y=y;
zako[tnum].hp=hp;
zako[tnum].pat=pat;
zako[tnum].shoki=1;}
switch(zako[tnum].pat)
{
case 0:
if(lr==0)
{if(map[Seisu(zako[tnum].y)/Chip][Seisu(zako[tnum].x+24)/Chip]=='1')
{lr=1;} }
else if(lr==1)
{if(map[Seisu(zako[tnum].y)/Chip][Seisu(zako[tnum].x-24)/Chip]=='1')
{lr=0;} }
if(lr==0)
{zako[tnum].x+=2;
if(Seisu(zako[tnum].x)%20==0)
{ Ndmake(zako[tnum].x-40,zako[tnum].y,-5,0,2,150);
} }
else if(lr==1)
{zako[tnum].x-=2;
}
break;
case 1:
break;
}
if(Ndhan(tnum)>0)
{ zako[tnum].hp-=Ndhan(tnum);
if(zako[tnum].hp<=0)
{printfDx("てきはしんだ!");}
}
return 0;
}
void tMitame()
{static short reF=0;
if(reF==0){
LoadDivGraph( "EDGE1.news.png" , 40 , 8 , 5 , 48 , 64 , image ); // 画像の分割読み込み
reF=1; }
Sdraw(zako[tnum].x-24,zako[tnum].y-32, image[1] , TRUE );
}
//zatukan.cpp
#include"DxLib.h"
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include"defines.h"
#include"Kansu.h"
extern int Pad;
extern short keyflag[28];
extern double rux,ruy;
extern short Mapy,Mapx,Mapy2,Mapx2;
extern short hirosa;
extern char map[50+1][70+1];
extern char map2[50+1][70+1];
extern short mapnm;
short Once(short i) //キーを押した瞬間のみ反応
{
static short fle[28];
if(Pad&(1<<i)){
{fle[i]++; }
if(fle[i]>=10000)
{ fle[i]--; }
}
else
{fle[i]=0;}
return fle[i];
}
int Seisu(double i)
{int re;
re=(int)i;
return re;
}
void Sdraw(int x,int y,int Grhandle,int Transflag)
{ DrawGraph( x-rux+320, y-ruy+240, Grhandle, Transflag);
}
short MapRoad(short i)//テキストで見えない空白を入れると死にかねない。
{int FileHandle,F2;
static short pi=1555;
if(i!=pi)
{char Fname[18];
Mapy=0;
Mapx=70;
sprintf(Fname,"mapdate%d.txt",i);
FileHandle=FileRead_open(Fname);
if(FileHandle==0)
{printfDx("そんなファイルがあるか!");}
while( FileRead_eof( FileHandle ) == 0 )
{
FileRead_gets(map[Mapy],300,FileHandle);
if(Mapy==0)
{Mapx=strlen(map[Mapy]);}
Mapy++;
}
FileRead_close(FileHandle);
char Fname2[18];
Mapy2=0;
Mapx2=70;
sprintf(Fname2,"mapgim%d.txt",i);
F2=FileRead_open(Fname2);
if(F2==0)
{printfDx("そんなファイルがあるか2!");}
while( FileRead_eof( F2 ) == 0 )
{
FileRead_gets(map2[Mapy2],300,F2);
Mapx2=strlen(map2[Mapy2]);
Mapy2++;
}
FileRead_close(F2);
pi=i;
printfDx("読み込み");}
return 0;
}
int MapDraw()
{
static short riF=0;
static int haikei[16];
static short x=0,y=0,syuru=0;
Mapch();
MapRoad(mapnm);
if(riF==0){
LoadDivGraph( "EDGE.haikei.png" , 16 , 4 , 4 , 64 , 64 , haikei );//画像読み込み
riF=1;}
for( y = 0 ; y < Mapy ; y ++ )//マップ描画
{
for( x = 0 ; x < Mapx ;x ++ )
{if( x*Chip>=Seisu(rux)-400 && x*Chip<=Seisu(rux)+320 && y*Chip<=Seisu(ruy)+240 &&y*Chip>=Seisu(ruy)-330){ //マップ内かどうか
switch(map[y][x])
{
case ' ':
syuru=0;
break;
case'1':
case'2':
case'3':
case'4':
case'5':
case'6':
case'7':
case'8':
case'9':
syuru=MojiS(map[y][x]);
break;
}
DrawGraph(x*Chip-rux+320,y*Chip-ruy+240,haikei[syuru],TRUE);
}
}
}//マップ描画
return 0;
}
short MojiS(char moji)
{
int suuti;
if (moji >= '0' && moji <= '9') { /* 判定部分 */
suuti = moji - '0'; /* 数値に変換 */
} else {
suuti = 0;
}
return suuti;
}
void Keytxt()
{for( int i=0; i<28; i++ ){
keyflag[i]=0;
if( Pad & (1<<i) ){ //ボタンiの入力フラグが立っていたら
DrawFormatString( 0, i*15, GetColor(255,255,255), "%dのキーが押されています", i );
keyflag[i]=1;
}
}
Pad = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; //入力状態をPadに格納
}
short Mapch()
{
short cha=0;
switch(mapnm)
{
case 0:
if(MapGim(rux,ruy)==1)
{mapnm=1;
rux=150;
ruy=220;}
break;
case 1:
if(MapGim(rux,ruy)==1)
{mapnm=0;
rux=1440;
ruy=340;}
break;
}
cha=mapnm;
//printfDx("%d",cha);
return cha;
}
short MapGim(double x,double y)
{static short ret;
switch(map2[Seisu(y)/Chip][Seisu(x)/Chip])
{case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
ret=MojiS(map2[Seisu(y)/Chip][Seisu(x)/Chip]);
break;
case ' ':
ret=100;
break;
case 'b':
case 'c':
case 'd':
case 'f':
ret=100+(map2[Seisu(y)/Chip][Seisu(x)/Chip]-'a');
}
return ret;
}
//defines.h
#ifndef DEF_defines_H //二重include防止
#define DEF_defines_H
#define Chip 64
#define mia1 4
#define mia2 10//mitame
#define mia3 16
#define Kas 0.7 //Action
#define Bkas 0.2//xのときのyの減速
#define Ri 3
#define Sic 15
#define Da 2
#define Nana 0.7
#define Nac 8
#define Yari 12
#define DMAX 100
#define Chip 64//Map
#endif
//Kansu.h
#ifndef DEF_kansh_H //二重include防止
#define DEF_Kansu_H
int Action();
int MapDraw();
void Mitame();
short Syujou();
void Shibou();
short Hgage();
short tAction(double x,double y,short pat,short hp);
void tMitame();
short Once(short i);
int Seisu(double i);
void Sdraw(int x,int y,int Grhandle,int Transflag);
short MapRoad(short num);
short MojiS(char moji);
void Keytxt();
short Mapch();
short MapGim(double x,double y);
short ComA(char now,char next);
short Syudam();
short Ndhan(short hited);//キャラ、攻撃。単語が間違っているのはしらない。
short Nsyuhan(double rux,double ruy);
void Nredam();
void Ndsyoki();
void Tsyoki();
short Ndplus();
short Ndmake(double x,double y,double sx,double sy,short iryok,short nokori);
short Ndcount();
#endif
//Kouzou.h
#ifndef DEF_kouzou_H //二重include防止
#define DEF_kouzou_H
struct Dam
{
double x;
double y;
short iryok;
short nokori;
};
struct Ndam
{
double x;//現れる場所
double y;
double sx;//移動スピード
double sy;
short iryok;//威力
short nokori;//判定が残る時間
};
struct Teki
{
double x;
double y;
short hp;
short pat;//行動パターン
short shoki;//初登場か
};
#endif