ゲーム製作の一環として、マップスクロールに挑戦しているのですが、
壁抜けしてしまいます。(特にブロックの角)
おそらくソースの中の、
マップ確認のとこが原因だと思うのですが、
何がいけないか分かりません・・・
-------------------------------ソース----------------------------------
codeタグを付与しておきました。 by softya(ソフト屋)
#include"reiDX.h"
#define MAX_SHOT_COUNT 3
#define MAX_SHOT 30
#define FloorY 390
//メニューフラグ
int SPoint = 0 ;
int MenuMode=0;
//マップ1定数
#define MAP_X1 50
#define MAP_Y1 30 //このステージのサイズ
#define MAP_Z1 3 //このコースに何ステージあるか
//テスト変数
int a=0;
//ステージがどこか表すグラフ
int NowStage=0;
//forに使う変数
int j,i;
//背景変数
int BackCMode=0;
//乱数
#define R GetRand(255)
//マップ系変数
int MapDate1[MAP_Z1][MAP_Y1][MAP_X1]={
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,3,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,1,0,0,0,1,
1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,
1,2,2,2,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
1,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,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,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,1,1,1,1,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,0,0,0,0,0,0,1,5,5,5,1,0,1,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,0,0,0,0,0,0,1,5,5,5,1,0,0,1,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,0,0,0,0,0,0,1,5,5,5,1,0,0,0,1,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,0,0,0,0,0,0,1,5,5,5,1,0,0,0,0,1,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,0,0,0,0,0,0,1,5,5,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,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,2,0,2,2,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,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,2,0,2,2,1,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,4,4,0,1,0,0,0,0,0,0,0,0,0,1,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,2,0,2,2,2,0,0,1,0,0,4,4,4,4,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,2,0,0,1,0,0,4,4,4,4,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,2,0,0,1,0,0,4,4,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
},
//----------------------------------------------------------------2
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,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,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0,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,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0,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,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0,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,2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,1,5,5,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,2,2,2,1,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,1,0,0,0,0,0,0,0,0,0,1,0,0,1,5,5,5,5,5,5,5,5,5,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,1,0,0,0,0,0,0,0,0,0,1,0,0,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,0,0,0,0,0,0,1,
1,6,6,6,6,6,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,6,6,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,6,6,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,6,6,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,6,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,6,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,6,6,6,6,6,6,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,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,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,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,0,0,0,0,0,0,0,0,0,1,0,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,2,3,3,3,3,0,0,0,0,0,0,0,0,0,1,0,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,2,3,3,3,3,0,0,0,0,0,0,0,0,0,1,0,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,2,3,3,3,3,0,0,0,0,0,0,0,0,0,1,0,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,2,3,3,3,3,0,0,0,0,0,0,0,0,0,1,0,0,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
},
//----------------------------------------------------------------3
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,3,3,1,1,1,1,1,1,1,1,1,1,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,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,1,0,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,0,0,0,0,0,0,0,0,0,0,3,0,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,0,0,0,0,0,0,0,0,0,0,3,0,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,0,0,0,0,0,0,0,0,0,0,3,0,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,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,3,0,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,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,0,0,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
},
};
//マップ座標
int map_X1=270,map_Y1=170;
int MSetX=0,MSetY=0;
int OldMX,OldMY; //1ループ前の座標
//プレイヤーデータ
int WinMode=0; //水に入ったとき
int PlayerMode = 0; //プレイヤーの向き
int PlayerX=640/2,
PlayerY=480/2;//プレイヤーの座標
double HedAngle=0; //頭の角度
double angle=0; //銃の角度
int ShotCount=0; //ショットを打つタイミング
int bacTining; //緊急回避の
int OldX,OldY; //1ループ前の座標
int DamageCheck=0;
int PlayerHP=1000; //プレイヤーのHP
//プレイヤービームデータ
int ShotX[MAX_SHOT],ShotY[MAX_SHOT],ShotValid[MAX_SHOT];
double beamAngle[MAX_SHOT];
double sppedX = 0,sppedY=0;
int SHOT=0;
int UpPwer=50;
//エフェクトデータ
int efectX[MAX_SHOT];
int efectY[MAX_SHOT];
int efectC[MAX_SHOT];
int efectV[MAX_SHOT];
//マグマデータ
double LavaNum;
//グラフィックロード
int efectb[9];
int Lava1[6];
int Down_Map[6];
int ranthar = LoadGraph( "Planet invasion\\rantha.bmp" ) ;
int MyBeam = LoadGraph( "Planet invasion\\myBeam.bmp" ) ;
int PlayerH = LoadGraph( "Planet invasion\\PlayerHed.bmp" ) ;
int PlayerB[6];
int MapCip = LoadGraph( "Planet invasion\\map_cip1.bmp" ) ;
int MapBCip = LoadGraph( "Planet invasion\\map_cip2.bmp" ) ;
int MapBCip2 = LoadGraph( "Planet invasion\\map_cip3.bmp" ) ;
int enemy1 = LoadGraph( "Planet invasion\\enemy_test.bmp" ) ;
//効果音ロード
int kaihi = LoadSoundMem( "GoToBack.wav" ) ;
int SoundBeam = LoadSoundMem( "S_Beam1.wav" ) ;
int BGM1 = LoadSoundMem( "test_BGM.mp3" ) ;
int BAttack = LoadSoundMem( "Beam_attack.mp3" ) ;
int Win = LoadSoundMem( "水in.wav" ) ;
//キー判定ハンドル
int Key;
//-----------敵データ------------------
int enemyX1[10],enemyY1[10],enemyV1[10];
int OldEX[10],OldEY[10];
//関数プロトタイプ宣言
int PlayerForGroundScrolle(); //プレイヤー地上用操作関数
int DrawGameScleen(int Ch); //描画関数
int EnemyTest();
int MenuSet();
//-----------------------------------------------------------
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow ){
int flag;
flag=MessageBox(
NULL ,
TEXT("フルスクリーンモードで起動しますか?") ,
TEXT("スクリーン設定") ,
MB_YESNO | MB_ICONQUESTION );
if(flag==IDNO){
winmode;
SetGraphMode( 640 , 480 , 8 ) ;
}
if(flag==IDYES) SetGraphMode( 640 , 480 , 32 ) ;
LavaNum=0;
//SetDrawScreen(DX_SCREEN_BACK);
//SetUseMenuFlag( 1 ) ;
DXint;
LoadDivGraph("Planet invasion\\bakhatu.bmp",8,8,1,30,30,efectb);
LoadDivGraph("Planet invasion\\PlayerBoby.bmp",6,6,1,20,54,PlayerB);
LoadDivGraph("Planet invasion\\マグマ.bmp",6,6,1,20,30,Lava1);
LoadDivGraph("Planet invasion\\WOWN_MAP.bmp",6,6,1,20,30,Down_Map);
//グラフィックロード
ranthar = LoadGraph( "Planet invasion\\rantha.bmp" ) ;
MyBeam = LoadGraph( "Planet invasion\\myBeam.bmp" ) ;
PlayerH = LoadGraph( "Planet invasion\\PlayerHed.bmp" ) ;
MapCip = LoadGraph( "Planet invasion\\map_cip1.bmp" ) ;
MapBCip = LoadGraph( "Planet invasion\\map_cip2.bmp" ) ;
MapBCip2 = LoadGraph( "Planet invasion\\map_cip3.bmp" ) ;
enemy1 = LoadGraph( "Planet invasion\\enemy_test.bmp" ) ;
//効果音ロード
kaihi = LoadSoundMem( "GoToBack.wav" ) ;
SoundBeam = LoadSoundMem( "S_Beam1.wav" ) ;
BGM1 = LoadSoundMem( "test_BGM.mp3" ) ;
BAttack = LoadSoundMem( "Beam_attack.mp3" ) ;
Win = LoadSoundMem( "水in.wav" ) ;
for(int i = 0 ; i<MAX_SHOT ; i++){
efectX[i]=0;
efectY[i]=0;
efectC[i]=0;
efectV[i]=0;
}
for(int i = 0 ; i<MAX_SHOT ; i++){
ShotX[i]=PlayerX;
ShotY[i]=PlayerY;
ShotValid[i]=0;
}
for(int i = 0 ; i<10 ; i++){
enemyX1[i]=GetRand(600);
enemyY1[i]=GetRand(600);
enemyV1[i]=1;
}
//-*-----------------------------------------------------------------------------
//BGM操作
PlaySoundMem( BGM1 , DX_PLAYTYPE_LOOP );
DXloop{
if(PlayerForGroundScrolle()==-1)goto END;
EnemyTest();
//描画
DrawGameScleen(1);
}
END:
DXend;
}
int EnemyTest(){
//メニュー選択
if(MenuMode==1){
}
else
{
//敵(テスト)
for(j=0;j<10;j++){
OldEX[j]=enemyX1[j];
OldEY[j]=enemyY1[j];
enemyX1[j]+=sppedX;
enemyY1[j]-=sppedY;
if(enemyV1[j]==1)Sgoit(PlayerX,PlayerY,&enemyX1[j],&enemyY1[j],j+1.5,j);
if(rattackc(PlayerX,PlayerY,20,54,enemyX1[j],enemyY1[j],20,20)==1&&enemyV1[j]==1&&
bacTining==0){
PlayerHP--;
DamageCheck=1;
}
for(i=0;i<MAX_SHOT;i++){
if(rattackc(map_X1+ShotX[i],map_Y1+ShotY[i],7,7,enemyX1[j],enemyY1[j],20,20)==1&&
ShotValid[i]==1&&
enemyV1[j]==1){
a--;
//効果音を鳴らす
PlaySoundMem(BAttack,DX_PLAYTYPE_BACK);
//ビームを消す
ShotValid[i]=0;
//敵を消す
enemyV1[j]=0;
//エフェクト設定
efectV[i]=1;
efectX[i]=ShotX[i]-GetRand(10);
efectY[i]=ShotY[i];
}
}
}
}
return 0;
}
int DrawGameScleen(int Ch){
// 画面を初期化する
if(Ch==1)ClearDrawScreen() ;
//描画-----------------------------------------------------------
//背景描画
DrawBox(0,0,650,600,GetColor(0,0,100),1);
//プレイヤー描画-----------------------------------------
for(int Y = map_Y1 ; Y < map_Y1+MAP_Y1 ; Y++ ){
for(int X = map_X1 ; X < map_X1+MAP_X1 ; X++ ){
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==5) {
SetDrawBlendMode( DX_BLENDMODE_ALPHA , 180 ) ;
DrawGraph(X+MSetX,Y+MSetY-10,Lava1[(int)LavaNum],1);
// 描画ブレンドモードをノーブレンドにする
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
}
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==1) DrawGraph(X+MSetX,Y+MSetY,MapCip,1);
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==2) DrawGraph(X+MSetX,Y+MSetY,MapBCip,1);
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==3) DrawGraph(X+MSetX,Y+MSetY,MapBCip2,1);
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==4) DrawBox(X+MSetX,Y+MSetY,X+MSetX+20,Y+MSetY+20,GetColor(0,0,0),1);
MSetX+=19;
}
MSetX=0;
MSetY+=19;
}
MSetY=0;
//プレイヤーボディ
if(PlayerMode==0)DrawRotaGraph2( PlayerX , PlayerY , 7 , 7 , 1.0 , -sppedX/4.999 , PlayerB[(int)LavaNum] , TRUE ) ;
if(PlayerMode==1)DrawRotaGraph2( PlayerX , PlayerY , 7 , 7 , 1.0 , -sppedX/4.999 , PlayerB[(int)LavaNum] , TRUE ,TRUE) ;
//プレイヤー顔
if(PlayerMode==0)DrawRotaGraph2(PlayerX+5-sppedX,
PlayerY-5-sppedX,5,16,1.0,HedAngle,PlayerH,1);
if(PlayerMode==1)DrawRotaGraph2(PlayerX-5-sppedX,
PlayerY-5+sppedX,5,16,1.0,HedAngle,PlayerH,1,TRUE);
//ランチャー描画
DrawRotaGraph2( PlayerX+5 , PlayerY+5 , 5 , 5 , 1.1 , angle , ranthar , TRUE ) ;
//標的描画
if(CheckHitKey(KEY_INPUT_LSHIFT)){
DrawCircle( PlayerX+(cos(angle)*100) ,
PlayerY+(sin(angle)*100) , 7 , GetColor(255,255,0) ,0 );
DrawCircle( PlayerX+(cos(angle)*100) ,
PlayerY+(sin(angle)*100) , 5 , GetColor(25,255,0) ,0 );
}
//敵
for( i = 0 ; i<10 ; i++){
if(enemyV1[i]==1){
DrawRotaGraph(enemyX1[i],enemyY1[i],1.0,getAngle(i),enemy1,TRUE);
}
}
//-------------------------------------------------------
//ビーム
for( i = 0 ; i<MAX_SHOT ; i++){
if(ShotValid[i]==1){
DrawRotaGraph2(map_X1+ShotX[i],map_Y1+ShotY[i],9,3,GetRand(1)+1,beamAngle[i],MyBeam,
TRUE);
}
}
//エフェクト
for(i=0;i<MAX_SHOT;i++){
if(efectV[i]==1)
DrawGraph(map_X1+efectX[i],map_Y1+efectY[i]-20,efectb[efectC[i]],TRUE);
}
//--------------------------------------------------------------------------------------------
//メニュ―(上)
//枠
DrawBox(0,0,700,60,GetColor(0,0,0),1);
DrawBox(0,60,700,61,GetColor(30,30,30),1);
DrawBox(0,61,700,62,GetColor(50,50,50),1);
DrawBox(0,62,700,63,GetColor(80,80,80),1);
//HP表示
DrawBox(19+10+30,9,300,21,GetColor(100,100,0),1);
DrawBox(19+10+30,9,300,21,GetColor(50,50,0),0);
DrawBox(19+10+30,9,2+10+20+19+PlayerHP/4,21,GetColor(155,155,0),1);
DrawBox(20+10+30,10,10+20+20+PlayerHP/4,20,GetColor(255,0,0),1);
DrawFormatString(0,7,GetColor(255,255,255),"HP:%d",PlayerHP);
//UP表示
DrawBox(19+10+30,27,210,41,GetColor(0,100,100),1);
DrawBox(19+10+30,27,210,41,GetColor(0,50,50),0);
DrawBox(19+10+30,27,8+2+10+20+19+UpPwer/2,41,GetColor(0,0,155),1);
DrawBox(20+10+30,28,8+10+20+20+UpPwer/2,40,GetColor(0,0,255),1);
DrawFormatString(0,25,GetColor(255,255,255),"UP:%d",UpPwer);
//--------------------------------------------------------------------------------------------
//メニュ―(中)
if(MenuMode==1){
SetDrawBlendMode( DX_BLENDMODE_ALPHA , 255/2) ;
DrawBox(0,0,700,600,GetColor(0,0,0),1);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
//ブレンドモードをリセットする。
MenuSet();
}else{
clsDx();
}
if(Ch==1)rc;
return 0;
}
int PlayerForGroundScrolle(){
Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ;
if(PlayerHP<0){rcls;
clsDx();
printfDx("Game Over");
rc;
WaitKey();
return -1;
}
//--------------プレイヤー制御---------------------
{
//メニュー選択
if( CheckHitKey( KEY_INPUT_SPACE ) == 1 ||
MenuMode==1)
{
// 押されていない
if( CheckHitKey( KEY_INPUT_C ) == 0 ){
MenuMode=1;
}else{
MenuMode=0;
}
}
else
{
// 押されている
//前の座標記憶
OldMX = map_X1;
OldMY = map_Y1;
if(angle >= 6.22222)angle=0;
if(angle <= -6.22222)angle=0;
//スピードの修正
if(CheckHitKey(KEY_INPUT_RIGHT)==0&&
CheckHitKey(KEY_INPUT_LEFT)==0&&
sppedX>=-0.2&&sppedX<=0.2){
sppedX=0.100005;
}
if( Key & PAD_INPUT_RIGHT &&
PlayerMode==0){ sppedX -= 0.5 ;} // 右を押していたら右に進む
if( Key & PAD_INPUT_RIGHT &&
PlayerMode==1){PlayerMode=0;}
if( Key & PAD_INPUT_LEFT &&
PlayerMode==1){ sppedX += 0.5;} // 左を押していたら左に進む
if( Key & PAD_INPUT_LEFT &&
PlayerMode==0){PlayerMode=1; }
//頭の角度を戻す
if( CheckHitKey(KEY_INPUT_UP)==0 ){ HedAngle=0.00000; }
if( CheckHitKey(KEY_INPUT_DOWN)==0){ HedAngle=0.00000; }
//銃の角度可変
if( Key & PAD_INPUT_UP ){ angle -= 0.04; HedAngle=-0.3; }
if( Key & PAD_INPUT_DOWN){ angle += 0.04;HedAngle=0.1; }
//敵(テスト)設置
if(CheckHitKey(KEY_INPUT_ESCAPE)==1){
for(int i = 0 ; i<10 ; i++){
enemyX1[i]=GetRand(600);
enemyY1[i]=GetRand(600);
enemyV1[i]=1;
}
}
//移動速度制限
if(sppedX >= 7)sppedX=7;
if(sppedX <= -7)sppedX=-7;
//緊急回避
if(CheckHitKey(KEY_INPUT_A)==1&&
bacTining==0&&
PlayerMode==0||
DamageCheck==1&&
PlayerMode==0){
PlaySoundMem( kaihi , DX_PLAYTYPE_BACK ) ;
sppedX = 9.9; bacTining=1;
DamageCheck=0;
}
if(CheckHitKey(KEY_INPUT_A)==1&&
bacTining==0&&
PlayerMode==1||
DamageCheck==1&&
PlayerMode==1){
PlaySoundMem( kaihi , DX_PLAYTYPE_BACK ) ;
sppedX = -9.9; bacTining=1;
DamageCheck=0;
}
//ながおし禁止
if(CheckHitKey(KEY_INPUT_A)==0&&
sppedX <= 1&&
PlayerMode==0) bacTining=0;
if(CheckHitKey(KEY_INPUT_A)==0&&
sppedX >= -1&&
PlayerMode==1) bacTining=0;
//移動していなければ減速
if(CheckHitKey(KEY_INPUT_RIGHT)==0||
CheckHitKey(KEY_INPUT_LEFT)==0){
if(sppedX > 0)sppedX-=0.2;
if(sppedX < 0)sppedX+=0.2;
}
//マグマページ処理
LavaNum+=0.1;
if(LavaNum>=6)LavaNum=0;
if(map_X1<=0)map_X1-=1;
//上昇処理
if(CheckHitKey(KEY_INPUT_X)==1&&UpPwer>=0){sppedY-=0.5;UpPwer--;}
if(CheckHitKey(KEY_INPUT_X)==0||UpPwer<=0){sppedY+=0.8;}
if(sppedY>=7)sppedY=7;
if(sppedY<=-7)sppedY=-7;
// ショット
if(CheckHitKey(KEY_INPUT_Z)==1)
{
ShotCount--;
if(ShotCount<=0){
ShotCount=MAX_SHOT_COUNT;
// ショットデータ検索
for( j = 0 ; j < MAX_SHOT ; j ++ )
{
if( ShotValid[ j ] == 0 ){ break ;}
}
//ショットを出す
if( j != MAX_SHOT )
{
a++;
//角度の設定
beamAngle[j]=angle;
// ショットの位置を設定
ShotX[ j ] = PlayerX+5-map_X1 ;
ShotY[ j ] = PlayerY+5-map_Y1 ;
// ショットデータを使用中にセット
ShotValid[ j ] = 1 ;
//効果音を鳴らす
PlaySoundMem( SoundBeam , DX_PLAYTYPE_BACK ) ;
}
}
}
//移動
map_X1 += sppedX;
map_Y1 -= sppedY ;
}
//マップ確認
for(int Y = map_Y1 ; Y < map_Y1+MAP_Y1 ; Y++ ){
for(int X = map_X1 ; X < map_X1+MAP_X1 ; X++ ){
//ビーム判定
for(int N = 0 ; N < MAX_SHOT ; N++){
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==1&&
rattackc(map_X1+ShotX[N],map_Y1+ShotY[N],5,5,X+MSetX,Y+MSetY,20,20)==1&&
ShotValid[N]==1
){
//効果音を鳴らす
PlaySoundMem(BAttack,DX_PLAYTYPE_BACK);
ShotValid[N]=0;
efectX[N]=ShotX[N];
efectY[N]=ShotY[N];
efectV[N]=1;
a--;
}
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==2&&
rattackc(map_X1+ShotX[N],map_Y1+ShotY[N],5,5,X+MSetX,Y+MSetY,20,20)==1&&
ShotValid[N]==1
){
//効果音を鳴らす
PlaySoundMem(BAttack,DX_PLAYTYPE_BACK);
MapDate1[NowStage][Y-map_Y1][X-map_X1]=0;
ShotValid[N]=0;
efectX[N]=ShotX[N];
efectY[N]=ShotY[N];
efectV[N]=1;
a--;
}
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==3&&
rattackc(map_X1+ShotX[N],map_Y1+ShotY[N],5,5,X+MSetX,Y+MSetY,20,20)==1&&
ShotValid[N]==1
){
//効果音を鳴らす
PlaySoundMem(BAttack,DX_PLAYTYPE_BACK);
MapDate1[NowStage][Y-map_Y1][X-map_X1]=2;
ShotValid[N]=0;
efectX[N]=ShotX[N];
efectY[N]=ShotY[N];
efectV[N]=1;
a--;
}
}
//側面判定
if((MapDate1[NowStage][Y-map_Y1][X-map_X1]==1||
MapDate1[NowStage][Y-map_Y1][X-map_X1]==2||
MapDate1[NowStage][Y-map_Y1][X-map_X1]==3
)&&
rattackc(PlayerX,PlayerY,20,54-7,X+MSetX-2,Y+MSetY+1,12,19)==1
){
if(sppedX<=0)sppedX+=0.8;
map_X1=OldMX;
// PlayerX = OldX;
}
if((MapDate1[NowStage][Y-map_Y1][X-map_X1]==1||
MapDate1[NowStage][Y-map_Y1][X-map_X1]==2||
MapDate1[NowStage][Y-map_Y1][X-map_X1]==3
)&&
rattackc(PlayerX,PlayerY,20,54-7,X+MSetX+10,Y+MSetY+1,10,19)==1
){
if(sppedX>=0)sppedX-=0.8;
map_X1=OldMX;
// PlayerX = OldX;
}
//上下判定
if((MapDate1[NowStage][Y-map_Y1][X-map_X1]==1||
MapDate1[NowStage][Y-map_Y1][X-map_X1]==2||
MapDate1[NowStage][Y-map_Y1][X-map_X1]==3
)&&
rattackc(PlayerX,PlayerY,20,54,X+MSetX,Y+MSetY-3,20,20)==1
){
sppedY=0;
map_Y1=OldMY;
if(UpPwer<300)
UpPwer++;
if(CheckHitKey(KEY_INPUT_RIGHT)==0&&
CheckHitKey(KEY_INPUT_LEFT)==0&&
sppedX>=-0.2&&sppedX<=0.2){
sppedX=0.100005;
}
}
if((MapDate1[NowStage][Y-map_Y1][X-map_X1]==1||
MapDate1[NowStage][Y-map_Y1][X-map_X1]==2||
MapDate1[NowStage][Y-map_Y1][X-map_X1]==3
)&&
rattackc(PlayerX,PlayerY-10,20,54,X+MSetX,Y+MSetY+15,20,5)==1
){
sppedY=0;
}
//マグマ処理
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==5&&
rattackc(PlayerX,PlayerY,20,54-10,X+MSetX,Y+MSetY,20,20)==1
){
if(PlayerHP>=0)PlayerHP--;
}
//ステージ変更
if(MapDate1[NowStage][Y-map_Y1][X-map_X1]==4&&
rattackc(PlayerX,PlayerY,20,54-10,X+MSetX,Y+MSetY,20,20)==1&&
CheckHitKey(KEY_INPUT_UP)==1
){
for(i=0;i<30;i++){
SetDrawBlendMode( DX_BLENDMODE_ALPHA , i) ;
DrawBox(0,0,700,600,GetColor(0,0,0),1);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
//ブレンドモードをリセットする。
rc;
} NowStage+=1;
//
for(i=600;i<600;i++)
DrawLine(0,i,700,i,GetColor(R,R,R),1);
WaitTimer(1000);
rc;
}
MSetX+=19;
}
MSetX=0;
MSetY+=19;
}
MSetY=0;
// ショットの移動処理
for( j = 0 ; j < MAX_SHOT ; j ++ )
{
if( ShotValid[ j ] == 0 ){
ShotX[j] = PlayerX;
ShotY[j] = PlayerY;
continue ; }
// 位置をずらす
ShotY[ j ] += sin(beamAngle[j])*9 ;
ShotX[ j ] += cos(beamAngle[j])*9 ;
// 画面外に出ていたらショットデータを無効にする
if( ShotY[ j ] < -320 ||ShotY[j] > 1000 ||
ShotX[ j ] < -320 ||ShotX[j] > 1000 )
{
ShotValid[ j ] = 0 ;
a--;
}
}
//エフェクト処理
for(i=0;i<MAX_SHOT;i++){
//コマを進める
if(efectV[i]==1)efectC[i]++;
//コマが最後なら消す
if(efectC[i] >= 8){
efectC[i]=0;
efectV[i]=0;
}
}
}
return 0;
}
// 選択項目の文字列
char *GString[] =
{
"ステータス" ,
"ステージ" ,
"?",
"?",
NULL
} ;
//メニュー関数
int MenuSet(){
int SenntakuNum ;
// 選択ポインタの位置初期化
// SPoint = 0 ;
// 選択項目の数を取得&ついでに項目描画
SenntakuNum = 0 ;
while( GString[ SenntakuNum ] != NULL )
{
DrawString( 32 , SenntakuNum * 32 , GString[ SenntakuNum ] , GetColor( 255 , 255 , 255 ) ) ;
SenntakuNum ++ ;
}
// 前のカーソル消去
DrawBox( 0 , 0 , 32 , SenntakuNum * 32 , 0 , TRUE ) ;
// カーソル描画
DrawBox( 0 , SPoint * 32 , 16 , SPoint * 32 + 16 ,
GetColor( 255 , 0 , 0 ) , TRUE ) ;
// キー入力
{
// キー入力待ち
while( ProcessMessage() == 0 && CheckHitKeyAll() != 0 ){}
while( ProcessMessage() == 0 && CheckHitKeyAll() == 0 ){}
// キー入力に応じて処理
// カーソル移動
if( CheckHitKey( KEY_INPUT_UP ) != 0 && SPoint != 0 ) SPoint -- ;
if( CheckHitKey( KEY_INPUT_DOWN ) != 0 && SPoint < SenntakuNum - 1 ) SPoint ++ ;
// 決定キー時処理
if( CheckHitKey( D_DIK_RETURN ) != 0 )
{
// 項目に応じた処理を行う
if(SPoint==0){clsDx();
printfDx("\n\n\n\n\n\n\n\n座標:%d,%d\nビームの数:%d\n上昇スピード:%f\n横移動速度:%f\n上昇カウンタ:%d\nプレイヤーの銃の角度:%f\nプレイヤーの顔の角度:%f\nプレイヤーの向き%d\nプレイヤーのHP%d\n%d \n\nCキーを押して戻る",map_X1,map_Y1,a,sppedY,sppedX,UpPwer,angle,HedAngle,PlayerMode,PlayerHP,MenuMode);
}
if(SPoint==1){clsDx();
printfDx("\n\n\n\n\n\n\n練習ステージ-%d\nCキーを押して戻る",NowStage);
}
if(SPoint==2){clsDx();
printfDx("\n\n\n\n\n\n\n\nまだ、未定です。\nCキーを押して戻る");
}
}
}
return 0;
}
------------------------------------------reiDX.h---------------------------------------------------
#include <DxLib.h>
#include <math.h>
#include<windows.h>
//置き換え
#define DXmain WINAPI WinMain(HINSTANCE h1, HINSTANCE hP, LPSTR lpC, int nC)
#define DXloop while(ProcessMessage()==0)
#define winps ProcessMessage()==0
#define key GetJoypadInputState(DX_INPUT_KEY)
#define rRIGHT PAD_INPUT_RIGHT
#define rLEFT PAD_INPUT_LEFT
#define rUP PAD_INPUT_UP
#define rDOWN PAD_INPUT_DOWN
#define winname SetMainWindowText
#define winsize SetGraphMode
#define winmode ChangeWindowMode(TRUE)
#define DXint if(DxLib_Init() == -1) return -1//-----------------------これは winsize や winmode を書いた後に書いておく
#define rcls ClsDrawScreen()
#define rc ScreenFlip()
#define DXend DxLib_End() ;return 0 ;
#define LOGnot SetOutApplicationLogValidFlag(FALSE);
#define GetMouse GetMousePoint
//Srattackc関数置き換え
#define ATTACKC_UP 1
#define ATTACKC_DOWN 2
#define ATTACKC_RIGHT 3
#define ATTACKC_LEFT 4
//関数
double Ma[1024];//Sgoitに使った角
int rattackc(int x1, int y1, int sx1 , int sy1, int x2, int y2 ,int sx2 , int sy2){
int x11; //右上
int y11 ; //左下
int x111 ;
int y111;
int x22 ;
int y22 ;
int x222 ;
int y222;
int y12;
x11 = x1+sx1; //右上
y11 = y1+sy1; //左下
y12 = y1+sx1; //右上
x111 = x1+sx1+sy1;//⇒下
y111 = y1+sy1+sx1;//⇒下
x22 = x2+sx2; //右上
y22 = y2+sy2; //左下
x222 = x2+sx2+sy2;//⇒下
y222 = y2+sy2+sx2;//⇒下
//分岐部
if(((x1 >= x2 && x1 <= x22 )||
(x2 >= x1 && x2 <= x11))&&(
((y1 >= y2 && y1 <= y22 )||
(y2 >= y1 && y2 <= y11) )))
{return 1;
}else{
return 0;
}
//return 0;
}//
int rattackc2(int x1, int y1, int gf, int x2, int y2 ,int sx2 , int sy2){
int sx1,sy1;
GetGraphSize( gf , &sx1 , &sy1 ) ;
int x11; //右上
int y11 ; //左下
int x111 ;
int y111;
int x22 ;
int y22 ;
int x222 ;
int y222;
x11 = x1+sx1; //右上
y11 = y1+sy1; //左下
x111 = x1+sx1+sy1;//⇒下
y111 = y1+sy1+sx1;//⇒下
x22 = x2+sx2; //右上
y22 = y2+sy2; //左下
x222 = x2+sx2+sy2;//⇒下
y222 = y2+sy2+sx2;//⇒下
//分岐部
if(((x1 >= x2 && x1 <= x22 )||
(x2 >= x1 && x2 <= x11))&&(
((y1 >= y2 && y1 <= y22 )||
(y2 >= y1 && y2 <= y11) ))
)
{return 1;
}else{
return 0;
}
return 0;
}//
int rattackc3(int x1, int y1, int gf, int x2, int y2 ,int gf2){
int sx1,sy1,sx2,sy2;
GetGraphSize( gf , &sx1 , &sy1 ) ;
GetGraphSize( gf2 , &sx2 , &sy2 ) ;
int x11; //右上
int y11 ; //左下
int x111 ;
int y111;
int x22 ;
int y22 ;
int x222 ;
int y222;
x11 = x1+sx1; //右上
y11 = y1+sy1; //左下
x111 = x1+sx1+sy1;//⇒下
y111 = y1+sy1+sx1;//⇒下
x22 = x2+sx2; //右上
y22 = y2+sy2; //左下
x222 = x2+sx2+sy2;//⇒下
y222 = y2+sy2+sx2;//⇒下
//分岐部
if(((x1 >= x2 && x1 <= x22 )||
(x2 >= x1 && x2 <= x11))&&(
((y1 >= y2 && y1 <= y22 )||
(y2 >= y1 && y2 <= y11) ))
)
{return 1;
}else{
return 0;
}
return 0;
}//
//角度へGotoCertainAngle関数
int GotoCertainAngle(double Angle , int *MovesX , int *MovesY){
//X
*MovesX = cos(Angle);
//Y
*MovesY = sin(Angle);
}
//------------------------------------------------------
//近づく関数
//------------------------------------------------------
int goit( int x1 ,int y1 , int *x2 , int *y2 , int spead ){
if( *x2 <= x1 ){ *x2 += spead; }
if( *x2 >= x1 ){ *x2 -= spead; }
if( *y2 <= y1 ){ *y2 += spead; }
if( *y2 >= y1 ){ *y2 -= spead; }
return 0;
}
//goit関数強化バージョン
int Sgoit( int Px , int Py , int *Mx , int *My , double Spead , int SHOT ){
if(SHOT >= 1024)return -1 ;
int i = SHOT;
double ax , ay , bx , by ;
#define PI 3.1415926535897932384626433832795028841971
// bx,by 自分の進んでいる方向 ax,ay 本来進むべき方向
bx = cos( Ma[i] ) ;
by = sin( Ma[i] ) ;
ax = ( Px ) - *Mx ;
ay = ( Py ) - *My ;
Ma[i] += ( ax * by - ay * bx < 0.0 ) ? + PI / 180 * 8 : - PI / 180 * 8 ;
// 移動する
*Mx += ( int )( cos( Ma[i] ) * Spead );
*My += ( int )( sin( Ma[i] ) * Spead );
return 0;
}
//Sgoit関数から角度を取る関数
int getAngle(int SHOT_Nunber){
return Ma[SHOT_Nunber];
}
------------------------------------------------------------------------------
すみません・・
添付のやり方がわからなくて・・・・・
で、
画像ファイルは、
https://sites.google.com/site/zatugakut ... revision=1
の中にあります。
みにくいと思いますが、
なぜ、壁抜けしてしまうか理由が分かれば、
助かります。
読解力がないので、できれば、
修正したところを書いてくれればうれしいです。
お願いします。
えっと・・・
自作ヘッダーファイルを使用してしまってみにくいです・・
すみません