ページ 1 / 1
敵の体力について
Posted: 2013年1月17日(木) 16:07
by bruu
いきなりですいません・・・高2の男子高校生ですが
このサイトを見ながらプログラミング?をしているのですが
敵の体力(ボス)の表示ができません・・・
初心者なんですががんばって理解しようとしてますがだめでした・・・
どなたか教えてください!お願いします!
Re: 敵の体力について
Posted: 2013年1月17日(木) 16:16
by softya(ソフト屋)
どんなプログラムコードを組んでいるか教えてもらえないと答え様がないのでお願いします。
このサイトの何処を参考にしているかでも話は大分違いますから勘では答えられませんので。
そもそもDrawFormatString()とかではダメなのでしょうか?
Re: 敵の体力について
Posted: 2013年1月17日(木) 16:56
by bruu
すいません!
サイトのほうはシューティングゲームの館を参考にさせていただいています!
プログラムの方はファイルを分けてやっています・・・
非常に見にくいです・・・
一つ目のファイル名は initial.cpp
#include "DxLib.h"
#include "ExternGV.h"
void initialization(){
int i;
Player.x=400.0;
Player.y=930.0;
Player.counter=0;
Player.status=0;
for(int i=0;i<PLAYER_MAX_SHOT1;i++)
for(int j=0;j<PLAYER_MAX_SHOT2;j++)
PlayerShot[j].flag=0;
for(int i=0;i<ENEMY_TOTAL_NUM;i++){
enemy.flag=0;
EnemyShot.flag=0;
for(int j=0;j<ENEMY_TOTAL_SHOT_NUM;j++)
EnemyShot.EnemyShots[j].flag=0;
}
ごめんなさい長すぎるのでもうひとつ追記させてもらいます・・・
}
void SetColor(){
color_white = GetColor(255,255,255); //白色ハンドルを取得
}
二つ目のファイル名は fps.cpp
#include "DxLib.h"
#include "ExternGV.h"
void FpsTimeFanction(){
static int FpsTime[2]={0,},FpsTime_i=0;
static double Fps=0.0;
if(FpsTime_i== 0)
FpsTime[0]=GetNowCount(); //1周目の時間取得
if(FpsTime_i==49){
FpsTime[1]=GetNowCount(); //50周目の時間取得
Fps = 1000.0f / ((FpsTime[1] - FpsTime[0]) / 50.0f);//測定した値からfpsを計算
FpsTime_i=0;
}
else
FpsTime_i++; //現在何周目かカウント
if(Fps != 0)
DrawFormatString(1000,800,color_white,"FPS %.1f",Fps); //fpsを表示
return;
}
三つ目のファイル名は img_sound_load.cpp
#include "DxLib.h"
#include "ExternGV.h"
void img_sound_load(){
img_background[0] = LoadGraph("画像/original.jpg");
img_background[1] = LoadGraph("画像/スコア.png");
img_player_shot[0] = LoadGraph("画像/弾007.png");
img_player_shot[1] = LoadGraph("画像/弾007.png");
img_enemy1[0] = LoadGraph("画像/batorudo-mu.png");
img_enemy1[1] = LoadGraph("画像/batorudo-mu.png");
img_enemy1[2] = LoadGraph("画像/batorudo-mu.png");
img_enemy1[3] = LoadGraph("画像/batorudo-mu.png");
img_enemy1[4] = LoadGraph("画像/batorudo-mu.png");
img_enemy_shot[0] = LoadGraph("画像/弾007.png");
LoadDivGraph( "画像/カ♂リキー.png" , 4 , 4 , 1 , 32 , 48 , img_player ) ;
int ongaku, Count=0;
ongaku = LoadSoundMem("サウンド/バトルドーム_CM_高音質版.mp3"); // サウンド/1up.wavをロードし、識別番号をHandleに格納
if( Count % 600 == 0 ){ // 2秒に一度
PlaySoundMem( ongaku, DX_PLAYTYPE_LOOP ); // 効果音を再生する
}
Count++;
}
Re: 敵の体力について
Posted: 2013年1月17日(木) 17:03
by bruu
四つ目のファイル名は background.cpp
#include "DxLib.h"
#include "ExternGV.h"
void Background(){
DrawGraph(0,0,img_background[0],FALSE); //背景を描画
}
void Background2(){
DrawGraph(800,0,img_background[1],FALSE); //得点盤を描画
}
五つ目のファイル名は enemy.cpp
#include "DxLib.h"
#include "ExternGV.h"
#include <math.h>
#define PI 3.141593
void EnemyPattern4(int i){
int j;
if(enemy.counter<100)
enemy.y+=4.0f;
if(enemy.counter==200){ //弾を出す
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].flag==0)
break;
EnemyShot[j].mem_ex=enemy.x;
EnemyShot[j].mem_ey=enemy.y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
//ここまで
}
if(enemy.counter==400){ //弾を出す
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].flag==0)
break;
EnemyShot[j].mem_ex=enemy.x;
EnemyShot[j].mem_ey=enemy.y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
}
if(enemy.counter>600)
enemy.y-=0.9f;
if(enemy[i].counter>800)
enemy[i].y+=0.9f;
if(enemy[i].counter==900){ //弾を出す
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].flag==0)
break;
EnemyShot[j].mem_ex=enemy[i].x;
EnemyShot[j].mem_ey=enemy[i].y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
//ここまで
}
if(enemy[i].counter==950){//エネミーカウンターが100の時
for(j=0;j < ENEMY_TOTAL_NUM ;j++)//発射されていない弾を探す。
if(EnemyShot[j].flag==0)//あったらそこでiを保持してブレイク
break;
EnemyShot[j].flag=1;//発射フラグを立てる
EnemyShot[j].mem_ex=enemy[i].x;//弾の初期x座標を敵の座標から設定する
EnemyShot[j].mem_ey=enemy[i].y;//同様y
EnemyShot[j].mem_px=Player.x;//うつ瞬間のプレイヤーの座標を記憶
EnemyShot[j].mem_py=Player.y;//同様y
EnemyShot[j].counter=0;//カウンターを初期化
EnemyShot[j].pattern=1;//ショットパターン1とする
EnemyShot[j].img=0;//画像タイプは0とする
}
if(enemy[i].counter>1000)
enemy[i].x-=3.0f;
if(enemy[i].counter>1100)
enemy[i].x+=3.0f;
if(enemy[i].counter==1200){//エネミーカウンターが100の時
for(j=0;j < ENEMY_TOTAL_NUM ;j++)//発射されていない弾を探す。
if(EnemyShot[j].flag==0)//あったらそこでiを保持してブレイク
break;
EnemyShot[j].flag=1;//発射フラグを立てる
EnemyShot[j].mem_ex=enemy[i].x;//弾の初期x座標を敵の座標から設定する
EnemyShot[j].mem_ey=enemy[i].y;//同様y
EnemyShot[j].mem_px=Player.x;//うつ瞬間のプレイヤーの座標を記憶
EnemyShot[j].mem_py=Player.y;//同様y
EnemyShot[j].counter=0;//カウンターを初期化
EnemyShot[j].pattern=1;//ショットパターン1とする
EnemyShot[j].img=0;//画像タイプは0とする
}
if(enemy[i].counter>1250)
enemy[i].x+=2.8f;
if(enemy[i].counter==1300){//エネミーカウンターが100の時
for(j=0;j < ENEMY_TOTAL_NUM ;j++)//発射されていない弾を探す。
if(EnemyShot[j].flag==0)//あったらそこでiを保持してブレイク
break;
EnemyShot[j].flag=1;//発射フラグを立てる
EnemyShot[j].mem_ex=enemy[i].x;//弾の初期x座標を敵の座標から設定する
EnemyShot[j].mem_ey=enemy[i].y;//同様y
EnemyShot[j].mem_px=Player.x;//うつ瞬間のプレイヤーの座標を記憶
EnemyShot[j].mem_py=Player.y;//同様y
EnemyShot[j].counter=0;//カウンターを初期化
EnemyShot[j].pattern=1;//ショットパターン1とする
EnemyShot[j].img=0;//画像タイプは0とする
}
if(enemy[i].counter>1350)
enemy[i].x-=2.8f;
}
void EnemyControl(){
for(int i=0;i<100;i++){
if(enemy[i].flag==1){
// if(enemy[i].pattern==1)
// EnemyPattern1(i);
// if(enemy[i].pattern==2)
// EnemyPattern2(i);
// if(enemy[i].pattern==3)
// EnemyPattern3(i);
if(enemy[i].pattern==4)
EnemyPattern4(i);
}
}
}
void EnemyCalcDisp(){
int i;
for(i=0;i<100;i++)
if(enemy[i].flag==0)
break;
switch(counter){
case 100:
enemy[i].pattern=4;
enemy[i].flag=1;
enemy[i].counter=0;
enemy[i].size=0.5f;
enemy[i].x=550.0;
enemy[i].y=-10.0;
break;
default:
break;
}
int enemy_img[8]={0,1,2,3,4,3,2,1};
for(i=0;i<100;i++){
if(enemy[i].flag==1){
enemy[i].counter++;
DrawRotaGraph( (int)enemy[i].x , (int)enemy[i].y , enemy[i].size , 0.0f , img_enemy1[enemy_img[counter%32/4]] , TRUE ) ;
if(enemy[i].x<0.0-MONSTER1_X_SIZE/2.0*enemy[i].size || enemy[i].x>830.0+MONSTER1_X_SIZE/2.0*enemy[i].size ||
enemy[i].y<0.0-MONSTER1_Y_SIZE/2.0*enemy[i].size || enemy[i].y<0.0-MONSTER1_Y_SIZE/2.0*enemy[i].size)
enemy[i].flag=0;
if(((Player.x>(enemy[i].x-60))&&(Player.x<(enemy[i].x+50)))){
if(((Player.y>(enemy[i].y-30))&&(Player.y<enemy[i].y+80)))
{Player.x=450;Player.y=700;}}
}
}
}
Re: 敵の体力について
Posted: 2013年1月17日(木) 17:03
by softya(ソフト屋)
codeタグをお使いくださいね。
http://dixq.net/board/board.html#k10
bruu さんが書きました:すいません!
サイトのほうはシューティングゲームの館を参考にさせていただいています!
プログラムの方はファイルを分けてやっています・・・
非常に見にくいです・・・
一つ目のファイル名は initial.cpp
コード:
#include "DxLib.h"
#include "ExternGV.h"
void initialization(){
int i;
Player.x=400.0;
Player.y=930.0;
Player.counter=0;
Player.status=0;
for(int i=0;i<PLAYER_MAX_SHOT1;i++)
for(int j=0;j<PLAYER_MAX_SHOT2;j++)
PlayerShot[i][j].flag=0;
for(int i=0;i<ENEMY_TOTAL_NUM;i++){
enemy[i].flag=0;
EnemyShot[i].flag=0;
for(int j=0;j<ENEMY_TOTAL_SHOT_NUM;j++)
EnemyShot[i].EnemyShots[j].flag=0;
}
ごめんなさい長すぎるのでもうひとつ追記させてもらいます・・・
}
void SetColor(){
color_white = GetColor(255,255,255); //白色ハンドルを取得
}
二つ目のファイル名は fps.cpp
#include "DxLib.h"
#include "ExternGV.h"
void FpsTimeFanction(){
static int FpsTime[2]={0,},FpsTime_i=0;
static double Fps=0.0;
if(FpsTime_i== 0)
FpsTime[0]=GetNowCount(); //1周目の時間取得
if(FpsTime_i==49){
FpsTime[1]=GetNowCount(); //50周目の時間取得
Fps = 1000.0f / ((FpsTime[1] - FpsTime[0]) / 50.0f);//測定した値からfpsを計算
FpsTime_i=0;
}
else
FpsTime_i++; //現在何周目かカウント
if(Fps != 0)
DrawFormatString(1000,800,color_white,"FPS %.1f",Fps); //fpsを表示
return;
}
三つ目のファイル名は img_sound_load.cpp
#include "DxLib.h"
#include "ExternGV.h"
void img_sound_load(){
img_background[0] = LoadGraph("画像/original.jpg");
img_background[1] = LoadGraph("画像/スコア.png");
img_player_shot[0] = LoadGraph("画像/弾007.png");
img_player_shot[1] = LoadGraph("画像/弾007.png");
img_enemy1[0] = LoadGraph("画像/batorudo-mu.png");
img_enemy1[1] = LoadGraph("画像/batorudo-mu.png");
img_enemy1[2] = LoadGraph("画像/batorudo-mu.png");
img_enemy1[3] = LoadGraph("画像/batorudo-mu.png");
img_enemy1[4] = LoadGraph("画像/batorudo-mu.png");
img_enemy_shot[0] = LoadGraph("画像/弾007.png");
LoadDivGraph( "画像/カ♂リキー.png" , 4 , 4 , 1 , 32 , 48 , img_player ) ;
int ongaku, Count=0;
ongaku = LoadSoundMem("サウンド/バトルドーム_CM_高音質版.mp3"); // サウンド/1up.wavをロードし、識別番号をHandleに格納
if( Count % 600 == 0 ){ // 2秒に一度
PlaySoundMem( ongaku, DX_PLAYTYPE_LOOP ); // 効果音を再生する
}
Count++;
}
Re: 敵の体力について
Posted: 2013年1月17日(木) 17:05
by softya(ソフト屋)
bruu さんが書きました:コード:
四つ目のファイル名は background.cpp
#include "DxLib.h"
#include "ExternGV.h"
void Background(){
DrawGraph(0,0,img_background[0],FALSE); //背景を描画
}
void Background2(){
DrawGraph(800,0,img_background[1],FALSE); //得点盤を描画
}
五つ目のファイル名は enemy.cpp
#include "DxLib.h"
#include "ExternGV.h"
#include <math.h>
#define PI 3.141593
void EnemyPattern4(int i){
int j;
if(enemy[i].counter<100)
enemy[i].y+=4.0f;
if(enemy[i].counter==200){ //弾を出す
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].flag==0)
break;
EnemyShot[j].mem_ex=enemy[i].x;
EnemyShot[j].mem_ey=enemy[i].y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
//ここまで
}
if(enemy[i].counter==400){ //弾を出す
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].flag==0)
break;
EnemyShot[j].mem_ex=enemy[i].x;
EnemyShot[j].mem_ey=enemy[i].y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
}
if(enemy[i].counter>600)
enemy[i].y-=0.9f;
if(enemy[i].counter>800)
enemy[i].y+=0.9f;
if(enemy[i].counter==900){ //弾を出す
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].flag==0)
break;
EnemyShot[j].mem_ex=enemy[i].x;
EnemyShot[j].mem_ey=enemy[i].y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
//ここまで
}
if(enemy[i].counter==950){//エネミーカウンターが100の時
for(j=0;j < ENEMY_TOTAL_NUM ;j++)//発射されていない弾を探す。
if(EnemyShot[j].flag==0)//あったらそこでiを保持してブレイク
break;
EnemyShot[j].flag=1;//発射フラグを立てる
EnemyShot[j].mem_ex=enemy[i].x;//弾の初期x座標を敵の座標から設定する
EnemyShot[j].mem_ey=enemy[i].y;//同様y
EnemyShot[j].mem_px=Player.x;//うつ瞬間のプレイヤーの座標を記憶
EnemyShot[j].mem_py=Player.y;//同様y
EnemyShot[j].counter=0;//カウンターを初期化
EnemyShot[j].pattern=1;//ショットパターン1とする
EnemyShot[j].img=0;//画像タイプは0とする
}
if(enemy[i].counter>1000)
enemy[i].x-=3.0f;
if(enemy[i].counter>1100)
enemy[i].x+=3.0f;
if(enemy[i].counter==1200){//エネミーカウンターが100の時
for(j=0;j < ENEMY_TOTAL_NUM ;j++)//発射されていない弾を探す。
if(EnemyShot[j].flag==0)//あったらそこでiを保持してブレイク
break;
EnemyShot[j].flag=1;//発射フラグを立てる
EnemyShot[j].mem_ex=enemy[i].x;//弾の初期x座標を敵の座標から設定する
EnemyShot[j].mem_ey=enemy[i].y;//同様y
EnemyShot[j].mem_px=Player.x;//うつ瞬間のプレイヤーの座標を記憶
EnemyShot[j].mem_py=Player.y;//同様y
EnemyShot[j].counter=0;//カウンターを初期化
EnemyShot[j].pattern=1;//ショットパターン1とする
EnemyShot[j].img=0;//画像タイプは0とする
}
if(enemy[i].counter>1250)
enemy[i].x+=2.8f;
if(enemy[i].counter==1300){//エネミーカウンターが100の時
for(j=0;j < ENEMY_TOTAL_NUM ;j++)//発射されていない弾を探す。
if(EnemyShot[j].flag==0)//あったらそこでiを保持してブレイク
break;
EnemyShot[j].flag=1;//発射フラグを立てる
EnemyShot[j].mem_ex=enemy[i].x;//弾の初期x座標を敵の座標から設定する
EnemyShot[j].mem_ey=enemy[i].y;//同様y
EnemyShot[j].mem_px=Player.x;//うつ瞬間のプレイヤーの座標を記憶
EnemyShot[j].mem_py=Player.y;//同様y
EnemyShot[j].counter=0;//カウンターを初期化
EnemyShot[j].pattern=1;//ショットパターン1とする
EnemyShot[j].img=0;//画像タイプは0とする
}
if(enemy[i].counter>1350)
enemy[i].x-=2.8f;
}
void EnemyControl(){
for(int i=0;i<100;i++){
if(enemy[i].flag==1){
// if(enemy[i].pattern==1)
// EnemyPattern1(i);
// if(enemy[i].pattern==2)
// EnemyPattern2(i);
// if(enemy[i].pattern==3)
// EnemyPattern3(i);
if(enemy[i].pattern==4)
EnemyPattern4(i);
}
}
}
void EnemyCalcDisp(){
int i;
for(i=0;i<100;i++)
if(enemy[i].flag==0)
break;
switch(counter){
case 100:
enemy[i].pattern=4;
enemy[i].flag=1;
enemy[i].counter=0;
enemy[i].size=0.5f;
enemy[i].x=550.0;
enemy[i].y=-10.0;
break;
default:
break;
}
int enemy_img[8]={0,1,2,3,4,3,2,1};
for(i=0;i<100;i++){
if(enemy[i].flag==1){
enemy[i].counter++;
DrawRotaGraph( (int)enemy[i].x , (int)enemy[i].y , enemy[i].size , 0.0f , img_enemy1[enemy_img[counter%32/4]] , TRUE ) ;
if(enemy[i].x<0.0-MONSTER1_X_SIZE/2.0*enemy[i].size || enemy[i].x>830.0+MONSTER1_X_SIZE/2.0*enemy[i].size ||
enemy[i].y<0.0-MONSTER1_Y_SIZE/2.0*enemy[i].size || enemy[i].y<0.0-MONSTER1_Y_SIZE/2.0*enemy[i].size)
enemy[i].flag=0;
if(((Player.x>(enemy[i].x-60))&&(Player.x<(enemy[i].x+50)))){
if(((Player.y>(enemy[i].y-30))&&(Player.y<enemy[i].y+80)))
{Player.x=450;Player.y=700;}}
}
}
}
Re: 敵の体力について
Posted: 2013年1月17日(木) 17:09
by bruu
六つ目のファイル名は enemy_shot.cpp
#include "DxLib.h"
#include "ExternGV.h"
#include <math.h>
#define PI 3.141593
#define PATTERN1SPEED 4.0f
void EnemyShotPattern1(int i){
if(EnemyShot.counter==0){
EnemyShot.EnemyShots[0].flag=1;
EnemyShot.EnemyShots[0].x=EnemyShot.mem_ex;
EnemyShot.EnemyShots[0].y=EnemyShot.mem_ey;
EnemyShot.Angle[0] = atan2(EnemyShot.mem_py-EnemyShot.mem_ey,EnemyShot.mem_px-EnemyShot[i].mem_ex);
PlaySoundMem(sound_enemy_shot[0],DX_PLAYTYPE_BACK);
}
EnemyShot[i].EnemyShots[0].x+=PATTERN1SPEED*cos(EnemyShot[i].Angle[0]);
EnemyShot[i].EnemyShots[0].y+=PATTERN1SPEED*sin(EnemyShot[i].Angle[0]);
if(((Player.x>(EnemyShot[i].EnemyShots[0].x-10))&&(Player.x<(EnemyShot[i].EnemyShots[0].x+10)))){
if(((Player.y>(EnemyShot[i].EnemyShots[0].y-10))&&(Player.y<EnemyShot[i].EnemyShots[0].y+10)))
{Player.x=400;Player.y=930;}}}
void EnemyShotControl(){//ショットパターン1を呼ぶための関数enemy.cppのEnemyControl関数と役目一緒
int i;
for(i=0;i<ENEMY_TOTAL_NUM;i++){//敵の最大数100体だけループ
if(EnemyShot[i].flag==1){//ショットしている玉があれば
if(EnemyShot[i].pattern==1)//しかもそれがショットパターン1ならば
EnemyShotPattern1(i);//ショットパターン1へ
}
}
}
void EnemyShotCalcDisp(){//描画と、画面外に出たらフラグを戻す事を行う関数
for(int i=0;i<ENEMY_TOTAL_NUM;i++){//敵の最大数100体だけループ
if(EnemyShot[i].flag==1){//ショットしている弾の組があれば
EnemyShot[i].counter++;//ショットカウントをアップ
for(int j=0;j<ENEMY_TOTAL_SHOT_NUM;j++){//調べたショットの組の全ての弾(200個)ループ
if(EnemyShot[i].EnemyShots[j].flag==1){//ショットしている組の弾で、実際にショットしている弾なら
//弾を描画、今回はDrawGraphでもいい。
DrawRotaGraph( (int)EnemyShot[i].EnemyShots[j].x , (int)EnemyShot[i].EnemyShots[j].y , 1.0f , 0.0f , img_enemy_shot[EnemyShot[i].img] , TRUE ) ;
//弾が画面より外にあるときは発射フラグを戻す。
if(EnemyShot[i].EnemyShots[j].x<-20.0||EnemyShot[i].EnemyShots[j].x>780.0||EnemyShot[i].EnemyShots[j].y<-20.0||EnemyShot[i].EnemyShots[j].y>1000)
EnemyShot[i].flag=0;
}
}
}
}
for(int i=0;i<ENEMY_TOTAL_NUM;i++){//敵の最大数100体分ループ
if(EnemyShot[i].flag==1){//敵のショットが発射中なら
for(int j=0;j<ENEMY_TOTAL_SHOT_NUM;j++){//1組200個分のループ
if(EnemyShot[i].EnemyShots[j].flag==1){//1個でも発射中の弾があれば終了
return;
}
}
EnemyShot[i].flag=0;//全部発射中でなければその組全体の発射フラグを戻す。
}
}
}
七つ目のファイル名はplayer.cpp
#include "DxLib.h"
#include "ExternGV.h"
void PlayerControl(){
if(Key[KEY_INPUT_LEFT]==1){
Player.x-=4.0f; //移動速度の設定
if(Player.x<20.0)
Player.x=20.0;
}
if(Key[KEY_INPUT_RIGHT]==1){
Player.x+=4.0f;
if(Player.x>780.0) //じきの移動範囲(x)
Player.x=780.0; //上の値を超えたらx座標に戻る
}
if(Key[KEY_INPUT_UP]){
Player.y-=4.0f; //移動速度の設定
if(Player.y<15.0)
Player.y=15.0;
}
if(Key[KEY_INPUT_DOWN]==1){
Player.y+=4.0f;
if(Player.y>960.0) //じきの移動範囲(y)
Player.y=960.0; //上の値を超えたらx座標に戻る
}
DrawGraph((int)Player.x-13,(int)Player.y-13,img_player[0],TRUE);
}
void PlayerShotCalc(int i){
int j;
if(Key[KEY_INPUT_Z]==1 && counter%5==0){
for(j=0;j<PLAYER_MAX_SHOT2;j++){
if(PlayerShot[0][j].flag==0){
int koukaon;
koukaon=LoadSoundMem("サウンド/nc30638.wav");
PlaySoundMem(koukaon, DX_PLAYTYPE_BACK);
PlayerShot[0][j].flag=1;
PlayerShot[0][j].x=Player.x;
PlayerShot[0][j].y=Player.y;
break;
}
}
}
for(j=0;j<PLAYER_MAX_SHOT2;j++){
if(PlayerShot[0][j].flag==1){
PlayerShot[0][j].y-=10;
if(PlayerShot[0][j].y<-20)
PlayerShot[0][j].flag=0;
}
} if(((enemy[i].x>(PlayerShot[0][j].x-10))&&(enemy[i].x<(PlayerShot[0][j].x+10)))){
if(((enemy[i].y>(PlayerShot[0][j].y-10))&&(enemy[i].y<PlayerShot[0][j].y+10)))
{enemy[i].x=400;enemy[i].y=930;}}
}
void PlayerShotDisp(){
int j;
for(j=0;j<PLAYER_MAX_SHOT2;j++){
if(PlayerShot[0][j].flag==1){
DrawGraph(PlayerShot[0][j].x-10,PlayerShot[0][j].y-18,img_player_shot[0],TRUE);
}
}
}
Re: 敵の体力について
Posted: 2013年1月17日(木) 17:10
by softya(ソフト屋)
で、質問のことですが、何が分からないのでしょうか?
ボスの体力との事ですが、先に書いた通りDrawFormatString()ではダメなのでしょうか? もっと別の表示方法ですか?
どの程度わかっていなのか教えてください。
ただ、シューティングゲームの館を全て理解できていたら、さほど難しいものではないのです。
あとインデント(字下げ)が適当なのでバグのもとですので、注意してみてください。すごく読みづらいです。
【補足】
なんか全部コードを掲載する気のようですが、ボスに関係ない所は必要ありません。
ボスに関係する所がわからないのなら、最初から理解するようにしてください。
そのために分からない事があればお答えします。
「C言語~シューティングゲームの館~」
http://dixq.net/s/