移動するキャラに連続ショットを撃たせることができません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アップルミスト

移動するキャラに連続ショットを撃たせることができません

#1

投稿記事 by アップルミスト » 13年前

コード:

//省略     ※DXライブラリ使用です
int i;
int sevenx[1],seveny[1];
	int sevenflag[1];
	int sevensizex,sevensizey;
	int seven_counter;
	int sevengh;
	int sevenox[1000],sevenoy[1000];
	int sevenoflag[1000];
	int sevenosizex,sevenosizey;
	int seveno_counter;
	int sevenogh;
//省略
sevengh=LoadGraph("seven.jpg");
	sevenogh=LoadGraph("seveno.jpg");
//省略
for(i=0;i<1000;i+=1)
	{
		sevenox[i]=0;
		sevenoy[i]=0;
		sevenoflag[i]=0;
	}
	seveno_counter=0;
	for(i=0;i<1;i+=1)
	{
		sevenx[i]=0;
		seveny[i]=0;
		sevenflag[i]=0;
	}
	seven_counter=0;
//省略
sevensizex=20;
	sevensizey=20;
	sevenosizex=2;
	sevenosizey=100;
//省略
if(bom>300)
				{
					if(seveno_counter%20==0)
					{
						for(i=0;i<1000;i+=1)
						{
							if(sevenoflag[i]==0)
							{
								break;
							}
						}
						if(i<1000)
						{
							sevenoflag[i]=1;
							sevenox[i]=sevenx[i]+9;
							sevenoy[i]=-60;
						}
					}
					seveno_counter+=1;
					for(i=0;i<1000;i+=1)
					{
						if(sevenoflag[i]==1)
						{
							sevenoy[i]+=5;
							if(sevenoy[i]>480)
							{
								sevenoflag[i]=0;
							}
						}
					}
					for(i=0;i<1000;i+=1)
					{
						if(sevenoflag[i]==1)
						{
							if(sevenox[i]<onepx+psizex&&sevenox[i]+sevenosizex>onepx&&sevenoy[i]<onepy+psizey&&sevenoy[i]+sevenosizey>onepy)
							{
								sevenoflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<1000;i+=1)
					{
						if(sevenoflag[i]==1)
						{
							if(sevenox[i]<twopx+psizex&&sevenox[i]+sevenosizex>twopx&&sevenoy[i]<twopy+psizey&&sevenoy[i]+sevenosizey>twopy)
							{
								sevenoflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>300)
				{
					if(seven_counter%1==0)
					{
						for(i=0;i<1;i+=1)
						{
							if(sevenflag[i]==0)
							{
								break;
							}
						}
						if(i<1)
						{
							sevenflag[i]=1;
							sevenx[i]=0;
							seveny[i]=0;
						}
					}
					seven_counter+=1;
					for(i=0;i<1;i+=1)
					{
						if(sevenflag[i]==1)
						{
							if(c==0)
							{
								sevenx[i]+=5;
								if(sevenx[i]>620)
								{
									c=1;
								}
							}
							if(c==1)
							{
								sevenx[i]-=5;
								if(sevenx[i]<0)
								{
									c=0;
								}
							}
						}
					}
					for(i=0;i<1;i+=1)
					{
						if(sevenflag[i]==1)
						{
							if(sevenx[i]<onepx+psizex&&sevenx[i]+sevensizex>onepx&&seveny[i]<onepy+psizey&&seveny[i]+sevensizey>onepy)
							{
								sevenflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<1;i+=1)
					{
						if(sevenflag[i]==1)
						{
							if(sevenx[i]<twopx+psizex&&sevenx[i]+sevensizex>twopx&&seveny[i]<twopy+psizey&&seveny[i]+sevensizey>twopy)
							{
								sevenflag[i]=0;
								game_state=3;
							}
						}
					}
				}
//省略
for(i=0;i<1000;i+=1)
			{
				if(sevenoflag[i]==1)
				{
					DrawGraph(sevenox[i],sevenoy[i],sevenogh,TRUE);
				}
			}
			for(i=0;i<1;i+=1)
			{
				if(sevenflag[i]==1)
				{
					DrawGraph(sevenx[i],seveny[i],sevengh,TRUE);
				}
			}
//省略
件名のとおりです
左右を行き来するキャラクターに連続してショット(レーザー)を撃たせたいのですが、ひとつの弾が消えるまでもうひとつの弾が撃たれなくなっています。
弾を撃つ頻度を%1にしてみると、もうキャラの位置に関係なく上から降らせます。
かれこれ2週間も悩んでいます。
間違えている点を指摘、よろしくお願いします。

アップルミスト

Re: 移動するキャラに連続ショットを撃たせることができません

#2

投稿記事 by アップルミスト » 13年前

補足です
私はソースを1つにまとめて一気に書いています。
分けて書いてはおりません。
分けて書いたほうが良いとは存じますが、
今は一枚書きのソースという点をふまえて教えて頂けませんか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 移動するキャラに連続ショットを撃たせることができません

#3

投稿記事 by みけCAT » 13年前

わかりにくいので、動作するプロジェクト全体をどこかに上げていただけませんか?
例えばhttp://www.axfc.net/uploader/などが便利です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アップルミスト

Re: 移動するキャラに連続ショットを撃たせることができません

#4

投稿記事 by アップルミスト » 13年前

コード:

#include "DxLib.h"
#include "math.h"
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
	ChangeWindowMode(TRUE);
	if(DxLib_Init()==-1)
		return-1;
	SetDrawScreen(DX_SCREEN_BACK);
	char Key[256];
	int onepgh;
	int onepx,onepy;
	int twopgh;
	int twopx,twopy;
	int i;
	int cool_time;
	int secgh;
	int secx[1000],secy[1000];
	int secflag[1000];
	int thirdgh;
	int thirdx[10],thirdy[10];
	int thirdflag[10];
	int third_counter;
	int thirdrx[10],thirdry[10];
	int thirdrflag[10];
	int thirdr_counter;
	int thirdrsizex,thirdrsizey;
	int thirdlx[10],thirdly[10];
	int thirdlflag[10];
	int thirdl_counter;
	int thirdlsizex,thirdlsizey;
	int fourx[10],foury[10];
	int fourflag[10];
	int foursizex,foursizey;
	int fourgh;
	int four_counter;
	int fourtx[10],fourty[10];
	int fourtflag[10];
	int fourtsizex,fourtsizey;
	int fourt_counter;
	int fivegh;
	int fivex[5],fivey[5];
	int fiveflag[5];
	int fivesizex,fivesizey;
	int five_counter;
	int sixx[1],sixy[1];
	int sixflag[1];
	int sixsizex,sixsizey;
	int six_counter;
	int sixgh;
	int sevenx[1],seveny[1];
	int sevenflag[1];
	int sevensizex,sevensizey;
	int seven_counter;
	int sevengh;
	int sevenox[1000],sevenoy[1000];
	int sevenoflag[1000];
	int sevenosizex,sevenosizey;
	int seveno_counter;
	int sevenogh;
	int egh;
	int ex[1000],ey[1000];
	int eflag[1000];
	int e_counter;
	int sec_counter;
	int psizex,psizey;
	int esizex,esizey;
	int secsizex,secsizey;
	int thirdsizex,thirdsizey;
	int game_state=0;
	int white=GetColor(255,255,255);
	char OldKey[256];
	int bom;
	int a;
	int b;
	int c;
	int d;
	c=0;
	bom=0;
	onepx=270;
	onepy=400;
	twopx=250;
	twopy=400;
	onepgh=LoadGraph("onep.jpg");
	twopgh=LoadGraph("twop.jpg");
	fourgh=LoadGraph("four.jpg");
	fivegh=LoadGraph("five.jpg");
	sixgh=LoadGraph("six.jpg");
	sevengh=LoadGraph("seven.jpg");
	sevenogh=LoadGraph("seveno.jpg");
	cool_time=0;
	for(i=0;i<1000;i+=1)
	{
		sevenox[i]=0;
		sevenoy[i]=0;
		sevenoflag[i]=0;
	}
	seveno_counter=0;
	for(i=0;i<1;i+=1)
	{
		sevenx[i]=0;
		seveny[i]=0;
		sevenflag[i]=0;
	}
	seven_counter=0;
	for(i=0;i<1;i+=1)
	{
		sixx[i]=0;
		sixy[i]=0;
		sixflag[i]=0;
	}
	six_counter=0;
	for(i=0;i<5;i+=1)
	{
		fivex[i]=0;
		fivey[i]=0;
		fiveflag[i]=0;
	}
	five_counter=0;
	for(i=0;i<10;i+=1)
	{
		fourtx[i]=0;
		fourty[i]=0;
		fourtflag[i]=0;
	}
	fourt_counter=0;
	for(i=0;i<10;i+=1)
	{
		fourx[i]=0;
		foury[i]=0;
		fourflag[i]=0;
	}
	four_counter=0;
	for(i=0;i<10;i+=1)
	{
		thirdlx[i]=0;
		thirdly[i]=0;
		thirdlflag[i]=0;
	}
	thirdl_counter=0;
	for(i=0;i<10;i+=1)
	{
		thirdrx[i]=0;
		thirdry[i]=0;
		thirdrflag[i]=0;
	}
	thirdr_counter=0;
	for(i=0;i<10;i+=1)
	{
		thirdx[i]=0;
		thirdy[i]=0;
		thirdflag[i]=0;
	}
	third_counter=0;
	thirdgh=LoadGraph("third.jpg");
	for(i=0;i<1000;i+=1)
	{
		secx[i]=0;
		secy[i]=0;
		secflag[i]=0;
	}
	sec_counter=0;
	secgh=LoadGraph("secound.jpg");
	for(i=0;i<1000;i+=1)
	{
		ex[i]=0;
		ey[i]=0;
		eflag[i]=0;
	}
	e_counter=0;
	egh=LoadGraph("ee.jpg");
	psizex=10;
	psizey=10;
	esizex=1;
	esizey=1;
	secsizex=2;
	secsizey=2;
	thirdsizex=10;
	thirdsizey=20;
	thirdrsizex=10;
	thirdrsizey=20;
	thirdlsizex=10;
	thirdlsizey=20;
	foursizex=20;
	foursizey=10;
	fourtsizex=20;
	fourtsizey=10;
	fivesizex=5;
	fivesizey=5;
	sixsizex=40;
	sixsizey=40;
	sevensizex=20;
	sevensizey=20;
	sevenosizex=2;
	sevenosizey=100;
	for(i=0;i<256;i+=1)
	{
		Key[i]=0;
		OldKey[i]=0;
	}
	for(;;)
	{
		for(i=0;i<256;i+=1)
		{
			OldKey[i]=Key[i];
		}
		GetHitKeyStateAll(Key);
		switch(game_state)
		{
		case 0:
			SetFontSize(32);
			DrawString(100,100,"テスト",white);
			SetFontSize(10);
			DrawString(100,150,"テスト",white);
			SetFontSize(16);
			DrawString(100,400,"スペースキーでゲームスタート!",white);
			if(Key[KEY_INPUT_SPACE]==1&&OldKey[KEY_INPUT_SPACE]!=1)
			{
				game_state=1;
			}
			break;
			case 1:
				if(bom>300)
				{
					if(seveno_counter%20==0)
					{
						for(i=0;i<1000;i+=1)
						{
							if(sevenoflag[i]==0)
							{
								break;
							}
						}
						if(i<1000)
						{
							sevenoflag[i]=1;
							sevenox[i]=sevenx[i]+9;
							sevenoy[i]=-60;
						}
					}
					seveno_counter+=1;
					for(i=0;i<1000;i+=1)
					{
						if(sevenoflag[i]==1)
						{
							sevenoy[i]+=5;
							if(sevenoy[i]>480)
							{
								sevenoflag[i]=0;
							}
						}
					}
					for(i=0;i<1000;i+=1)
					{
						if(sevenoflag[i]==1)
						{
							if(sevenox[i]<onepx+psizex&&sevenox[i]+sevenosizex>onepx&&sevenoy[i]<onepy+psizey&&sevenoy[i]+sevenosizey>onepy)
							{
								sevenoflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<1000;i+=1)
					{
						if(sevenoflag[i]==1)
						{
							if(sevenox[i]<twopx+psizex&&sevenox[i]+sevenosizex>twopx&&sevenoy[i]<twopy+psizey&&sevenoy[i]+sevenosizey>twopy)
							{
								sevenoflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>300)
				{
					if(seven_counter%1==0)
					{
						for(i=0;i<1;i+=1)
						{
							if(sevenflag[i]==0)
							{
								break;
							}
						}
						if(i<1)
						{
							sevenflag[i]=1;
							sevenx[i]=0;
							seveny[i]=0;
						}
					}
					seven_counter+=1;
					for(i=0;i<1;i+=1)
					{
						if(sevenflag[i]==1)
						{
							if(c==0)
							{
								sevenx[i]+=5;
								if(sevenx[i]>620)
								{
									c=1;
								}
							}
							if(c==1)
							{
								sevenx[i]-=5;
								if(sevenx[i]<0)
								{
									c=0;
								}
							}
						}
					}
					for(i=0;i<1;i+=1)
					{
						if(sevenflag[i]==1)
						{
							if(sevenx[i]<onepx+psizex&&sevenx[i]+sevensizex>onepx&&seveny[i]<onepy+psizey&&seveny[i]+sevensizey>onepy)
							{
								sevenflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<1;i+=1)
					{
						if(sevenflag[i]==1)
						{
							if(sevenx[i]<twopx+psizex&&sevenx[i]+sevensizex>twopx&&seveny[i]<twopy+psizey&&seveny[i]+sevensizey>twopy)
							{
								sevenflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>250)
				{
					if(six_counter%1==0)
					{
						for(i=0;i<1;i+=1)
						{
							if(sixflag[i]==0)
							{
								break;
							}
						}
						if(i<1)
						{
							sixflag[i]=1;
							sixx[i]=300;
							sixy[i]=100;
						}
					}
					six_counter+=1;
					for(i=0;i<1;i+=1)
					{
						if(sixflag[i]==1)
						{
							b=GetRand(3);
							if(b==0)
							{
								sixy[i]+=10;
								if(sixy[i]>480)
								{
									sixflag[i]=0;
								}
							}
							if(b==1)
							{
								sixy[i]-=10;
								if(sixy[i]<0)
								{
									sixflag[i]=0;
								}
							}
							if(b==2)
							{
								sixx[i]+=10;
								if(sixx[i]>640)
								{
									sixflag[i]=0;
								}
							}
							if(b==3)
							{
								sixx[i]-=10;
								if(sixx[i]<0)
								{
									sixflag[i]=0;
								}
							}
						}
					}
					for(i=0;i<1;i+=1)
					{
						if(sixflag[i]==1)
						{
							if(sixx[i]<onepx+psizex&&sixx[i]+sixsizex>onepx&&sixy[i]<onepy+psizey&&sixy[i]+sixsizey>onepy)
							{
								sixflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<5;i+=1)
					{
						if(fiveflag[i]==1)
						{
							if(fivex[i]<twopx+psizex&&fivex[i]+fivesizex>twopx&&fivey[i]<twopy+psizey&&fivey[i]+fivesizey>twopy)
							{
								fiveflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>200)
				{
					if(five_counter%20==0)
					{
						for(i=0;i<5;i+=1)
						{
							if(fiveflag[i]==0)
							{
								break;
							}
						}
						if(i<5)
						{
							fiveflag[i]=1;
							fivex[i]=320;
							fivey[i]=100;
						}
					}
					five_counter+=1;
					for(i=0;i<5;i+=1)
					{
						if(fiveflag[i]==1)
						{
							a=GetRand(3);
							if(a==0)
							{
								fivey[i]+=5;
								if(fivey[i]>480)
								{
									fiveflag[i]=0;
								}
							}
							if(a==1)
							{
								fivey[i]-=5;
								if(fivey[i]<0)
								{
									fiveflag[i]=0;
								}
							}
							if(a==2)
							{
								fivex[i]+=5;
								if(fivex[i]>640)
								{
									fiveflag[i]=0;
								}
							}
							if(a==3)
							{
								fivex[i]-=5;
								if(fivex[i]<0)
								{
									fiveflag[i]=0;
								}
							}
						}
					}
					for(i=0;i<5;i+=1)
					{
						if(fiveflag[i]==1)
						{
							if(fivex[i]<onepx+psizex&&fivex[i]+fivesizex>onepx&&fivey[i]<onepy+psizey&&fivey[i]+fivesizey>onepy)
							{
								fiveflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<5;i+=1)
					{
						if(fiveflag[i]==1)
						{
							if(fivex[i]<twopx+psizex&&fivex[i]+fivesizex>twopx&&fivey[i]<twopy+psizey&&fivey[i]+fivesizey>twopy)
							{
								fiveflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>150)
				{
					if(fourt_counter%50==0)
					{
						for(i=0;i<10;i+=1)
						{
							if(fourtflag[i]==0)
							{
								break;
							}
						}
						if(i<10)
						{
							fourtflag[i]=1;
							fourtx[i]=-20;
							fourty[i]=0;
						}
					}
					fourt_counter+=1;
					for(i=0;i<10;i+=1)
					{
						if(fourtflag[i]==1)
						{
							fourty[i]+=3;
							fourtx[i]+=4;
							if(fourty[i]>480)
							{
								fourtflag[i]=0;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(fourtflag[i]==1)
						{
							if(fourtx[i]<onepx+psizex&&fourtx[i]+fourtsizex>onepx&&fourty[i]<onepy+psizey&&fourty[i]+fourtsizey>onepy)
							{
								fourtflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(fourtflag[i]==1)
						{
							if(fourtx[i]<twopx+psizex&&fourtx[i]+fourtsizex>twopx&&fourty[i]<twopy+psizey&&fourty[i]+fourtsizey>twopy)
							{
								fourtflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>150)
				{
					if(four_counter%50==0)
					{
						for(i=0;i<10;i+=1)
						{
							if(fourflag[i]==0)
							{
								break;
							}
						}
						if(i<10)
						{
							fourflag[i]=1;
							fourx[i]=640;
							foury[i]=0;
						}
					}
					four_counter+=1;
					for(i=0;i<10;i+=1)
					{
						if(fourflag[i]==1)
						{
							foury[i]+=3;
							fourx[i]-=4;
							if(foury[i]>480)
							{
								fourflag[i]=0;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(fourflag[i]==1)
						{
							if(fourx[i]<onepx+psizex&&fourx[i]+foursizex>onepx&&foury[i]<onepy+psizey&&foury[i]+foursizey>onepy)
							{
								fourflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(fourflag[i]==1)
						{
							if(fourx[i]<twopx+psizex&&fourx[i]+foursizex>twopx&&foury[i]<twopy+psizey&&foury[i]+foursizey>twopy)
							{
								fourflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>100)
				{
					if(thirdl_counter%100==0)
					{
						for(i=0;i<10;i+=1)
						{
							if(thirdlflag[i]==0)
							{
								break;
							}
						}
						if(i<10)
						{
							thirdlflag[i]=1;
							thirdlx[i]=315;
							thirdly[i]=0;
						}
					}
					thirdl_counter+=1;
					for(i=0;i<10;i+=1)
					{
						if(thirdlflag[i]==1)
						{
							thirdly[i]+=2;
							thirdlx[i]-=1;
							if(thirdly[i]>480)
							{
								thirdlflag[i]=0;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(thirdlflag[i]==1)
						{
							if(thirdlx[i]<onepx+psizex&&thirdlx[i]+thirdlsizex>onepx&&thirdly[i]<onepy+psizey&&thirdly[i]+thirdlsizey>onepy)
							{
								thirdlflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(thirdlflag[i]==1)
						{
							if(thirdlx[i]<twopx+psizex&&thirdlx[i]+thirdlsizex>twopx&&thirdly[i]<twopy+psizey&&thirdly[i]+thirdlsizey>twopy)
							{
								thirdlflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>100)
				{
					if(third_counter%100==0)
					{
						for(i=0;i<10;i+=1)
						{
							if(thirdflag[i]==0)
							{
								break;
							}
						}
						if(i<10)
						{
							thirdflag[i]=1;
							thirdx[i]=315;
							thirdy[i]=0;
						}
					}
					third_counter+=1;
					for(i=0;i<10;i+=1)
					{
						if(thirdflag[i]==1)
						{
							thirdy[i]+=2;
							if(thirdy[i]>480)
							{
								thirdflag[i]=0;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(thirdflag[i]==1)
						{
							if(thirdx[i]<onepx+psizex&&thirdx[i]+thirdsizex>onepx&&thirdy[i]<onepy+psizey&&thirdy[i]+thirdsizey>onepy)
							{
								thirdflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(thirdflag[i]==1)
						{
							if(thirdx[i]<twopx+psizex&&thirdx[i]+thirdsizex>twopx&&thirdy[i]<twopy+psizey&&thirdy[i]+thirdsizey>twopy)
							{
								thirdflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>100)
				{
					if(thirdr_counter%100==0)
					{
						for(i=0;i<10;i+=1)
						{
							if(thirdrflag[i]==0)
							{
								break;
							}
						}
						if(i<10)
						{
							thirdrflag[i]=1;
							thirdrx[i]=315;
							thirdry[i]=0;
						}
					}
					thirdr_counter+=1;
					for(i=0;i<10;i+=1)
					{
						if(thirdrflag[i]==1)
						{
							thirdry[i]+=2;
							thirdrx[i]+=1;
							if(thirdry[i]>480)
							{
								thirdrflag[i]=0;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(thirdrflag[i]==1)
						{
							if(thirdrx[i]<onepx+psizex&&thirdrx[i]+thirdrsizex>onepx&&thirdry[i]<onepy+psizey&&thirdry[i]+thirdrsizey>onepy)
							{
								thirdrflag[i]=0;
								game_state=2;
							}
						}
					}
					for(i=0;i<10;i+=1)
					{
						if(thirdrflag[i]==1)
						{
							if(thirdrx[i]<twopx+psizex&&thirdrx[i]+thirdrsizex>twopx&&thirdry[i]<twopy+psizey&&thirdry[i]+thirdrsizey>twopy)
							{
								thirdrflag[i]=0;
								game_state=3;
							}
						}
					}
				}
				if(bom>50)
				{
					if(sec_counter%20==0)
					{
						for(i=0;i<1000;i+=1)
				{
					if(secflag[i]==0)
					{
						break;
					}
				}
				if(i<1000)
				{
					secflag[i]=1;
					secx[i]=GetRand(640);
					secy[i]=0;
				}
			}
			sec_counter+=1;
			for(i=0;i<1000;i+=1)
			{
				if(secflag[i]==1)
				{
					secy[i]+=3;
					if(secy[i]>480)
					{
						secflag[i]=0;
					}
				}
			}
			for(i=0;i<1000;i+=1)
			{
				if(secflag[i]==1)
				{
					if(secx[i]<onepx+psizex&&secx[i]+secsizex>onepx&&secy[i]<onepy+psizey&&secy[i]+secsizey>onepy)
					{
						secflag[i]=0;
						game_state=2;
					}
				}
			}
			for(i=0;i<1000;i+=1)
			{
				if(secflag[i]==1)
				{
					if(secx[i]<twopx+psizex&&secx[i]+secsizex>twopx&&secy[i]<twopy+psizey&&secy[i]+secsizey>twopy)
					{
						secflag[i]=0;
						game_state=3;
					}
				}
					}
				}
			if(Key[KEY_INPUT_LEFT]==1)
			{
				if(onepx>0)
				{
					onepx-=3;
				}
			}
			if(Key[KEY_INPUT_RIGHT]==1)
			{
				if(onepx<630)
				{
					onepx+=3;
				}
			}
			if(Key[KEY_INPUT_UP]==1)
			{
				if(onepy>0)
				{
					onepy-=5;
				}
			}
			if(Key[KEY_INPUT_DOWN]==1)
			{
				//if(onepy<470)
				//{
					onepy+=5;
				//}
			}
			if(Key[KEY_INPUT_A]==1)
			{
				if(twopx>0)
				{
					twopx-=3;
				}
			}
			if(Key[KEY_INPUT_D]==1)
			{
				if(twopx<630)
				{
					twopx+=3;
				}
			}
			if(Key[KEY_INPUT_W]==1)
			{
				if(twopy>0)
				{
					twopy-=5;
				}
			}
			if(Key[KEY_INPUT_S]==1)
			{
				//if(twopy<470)
				//{
					twopy+=5;
				//}
			}
			cool_time-=1;
			if(e_counter%10==0)
			{
				for(i=0;i<1000;i+=1)
				{
					if(eflag[i]==0)
					{
						break;
					}
				}
				if(i<1000)
				{
					eflag[i]=1;
					ex[i]=GetRand(640);
					ey[i]=0;
				}
			}
			e_counter+=1;
			for(i=0;i<1000;i+=1)
			{
				if(eflag[i]==1)
				{
					ey[i]+=3;
					if(ey[i]>480)
					{
						bom+=1;
						eflag[i]=0;
					}
				}
			}
			for(i=0;i<1000;i+=1)
			{
				if(eflag[i]==1)
				{
					if(ex[i]<onepx+psizex&&ex[i]+esizex>onepx&&ey[i]<onepy+psizey&&ey[i]+esizey>onepy)
					{
						eflag[i]=0;
						game_state=2;
					}
				}
			}
			for(i=0;i<1000;i+=1)
			{
				if(eflag[i]==1)
				{
					if(ex[i]<twopx+psizex&&ex[i]+esizex>twopx&&ey[i]<twopy+psizey&&ey[i]+esizey>twopy)
					{
						eflag[i]=0;
						game_state=3;
					}
				}
			}
			for(i=0;i<1;i+=1)
			{
				if(sixflag[i]==1)
				{
					DrawGraph(sixx[i],sixy[i],sixgh,TRUE);
				}
			}
			for(i=0;i<5;i+=1)
			{
				if(fiveflag[i]==1)
				{
					DrawGraph(fivex[i],fivey[i],fivegh,TRUE);
				}
			}
			for(i=0;i<10;i+=1)
			{
				if(fourtflag[i]==1)
				{
					DrawGraph(fourtx[i],fourty[i],fourgh,TRUE);
				}
			}
			for(i=0;i<10;i+=1)
			{
				if(fourflag[i]==1)
				{
					DrawGraph(fourx[i],foury[i],fourgh,TRUE);
				}
			}
			for(i=0;i<10;i+=1)
			{
				if(thirdflag[i]==1)
				{
					DrawGraph(thirdx[i],thirdy[i],thirdgh,TRUE);
				}
			}
			for(i=0;i<10;i+=1)
			{
				if(thirdrflag[i]==1)
				{
					DrawGraph(thirdrx[i],thirdry[i],thirdgh,TRUE);
				}
			}
			for(i=0;i<10;i+=1)
			{
				if(thirdlflag[i]==1)
				{
					DrawGraph(thirdlx[i],thirdly[i],thirdgh,TRUE);
				}
			}
			for(i=0;i<1;i+=1)
			{
				if(sevenoflag[i]==1)
				{
					DrawGraph(sevenox[i],sevenoy[i],sevenogh,TRUE);
				}
			}
			for(i=0;i<1;i+=1)
			{
				if(sevenflag[i]==1)
				{
					DrawGraph(sevenx[i],seveny[i],sevengh,TRUE);
				}
			}
			DrawGraph(onepx,onepy,onepgh,TRUE);
			DrawGraph(twopx,twopy,twopgh,TRUE);
			for(i=0;i<1000;i+=1)
			{
				if(eflag[i]==1)
				{
					DrawGraph(ex[i],ey[i],egh,TRUE);
				}
			}
			for(i=0;i<1000;i+=1)
			{
				if(secflag[i]==1)
				{
					DrawGraph(secx[i],secy[i],secgh,TRUE);
				}
			}
			for(i=0;i<1000;i+=1)
			{
				if(sevenoflag[i]==1)
				{
					DrawGraph(sevenox[i],sevenoy[i],sevenogh,TRUE);
				}
			}
			for(i=0;i<1;i+=1)
			{
				if(sevenflag[i]==1)
				{
					DrawGraph(sevenx[i],seveny[i],sevengh,TRUE);
				}
			}
			break;
			case 2:
				SetFontSize(16);
				DrawString(100,150,"1Pの負け",white);
				break;
			case 3:
				SetFontSize(16);
				DrawString(100,150,"2Pの負け",white);
				break;
			default:
				break;
				}
				ScreenFlip();
				ClearDrawScreen();
				if(Key[KEY_INPUT_ESCAPE]==1)
				{
					break;
				}
				if(ProcessMessage()==-1)
				{
					break;
				}
				}
				DxLib_End();
				return 0;
				}
アップローダーは使ったことがないのでちょっと解読に時間がかかりそうです。
なのでソース全部をのせておきます。
もうしばらくおまちください。
ゲーム内容としては、2人でプレイヤーきゃらをそれぞれ動かし、さきに弾にあたったほうがまけ。
だんだんでてくる弾が増えてくるゲームです。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 移動するキャラに連続ショットを撃たせることができません

#5

投稿記事 by みけCAT » 13年前

とりあえず仮画像を入れて実行してみたのですが、それぞれのキャラクターの役割がよくわかりません。
「左右を行き来するキャラクター」とはどれのことですか?

おそらくsevenのことですね。

それと、最低限インデントは整えるべきだと思います。

追記:原因がわかったかもしれません。

提示されたコードの236行目の

コード:

sevenox[i]=sevenx[i]+9;
この部分で、iは最大999なのに対し、sevenx配列の要素は1個だけなので、
不正なアドレスにアクセスしてしまいます。
添付ファイル
tama_one.zip
プログラム+仮画像
(1.78 MiB) ダウンロード数: 109 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アップルミスト

Re: 移動するキャラに連続ショットを撃たせることができません

#6

投稿記事 by アップルミスト » 13年前

みけCATさん
ご指摘、ありがとうございます。
返信するのが遅くなってしまいました。
ご指摘を受けた後、改善に取り組みました。
sevenxが左辺にあわせて1000個に変えてみましたが、
キャラクターは1体しか必要ないので
出現するのは一体だけにしましたところ
レーザーが前回までのソースででてくるものに
x座標が9のレーザーが%20ででてくるようになってしまいました。
表現がわかりにくいですね。すいません。

こういった場合、どの値を合わせればいいのですか?
ずうずうしいとは思いますが、少しヒントがもらいたいです。

それと、インデント、とは整形機能だということは聞いたことはありますが
まだプログラミングを始めたばかりなのでよくわかりません。
私はVisual C++を使わせていただいています。
インデントのショートカットキー(?)があることは聞いたことはありますが、
具体的にどのようなことをすればいいのでしょうか?
それをすることの利点はなんでしょうか?
教えていただければ幸いです。

kurain
記事: 12
登録日時: 13年前

Re: 移動するキャラに連続ショットを撃たせることができません

#7

投稿記事 by kurain » 13年前

実行はしてません。
ごめんなさい。

>x座標が9のレーザーが%20ででてくるようになってしまいました。
要するにsevenoレーザーが左にばっかり出現するようになってしまったのでしょうか。
だとすれば推測ですが…
sevenは本来1人(人?)なのですよね?
sevenoレーザーの発射位置決定部分(上のソースでは236行目)
これは下記のままなのでしょうか。

コード:

sevenox[i]=sevenx[i]+9;
これでは

コード:

1番目のレーザーは1人目のsevenから。
2番目のレーザーは2人目のsevenから。
3番目のレーザーは3人目のsevenから。
4番目のレーザーは4人目のsevenから。
…略。
ところがsevenは1人しかいませんから存在しないsevenがレーザーを放っていることになります。
その結果存在しないsevenの初期化値あたりから適当に値を引っ張ってきてX座標が9のレーザーが出てくるのではないでしょうか。
(この辺は修正の仕方次第なので何とも言えません)

これが原因であればsevenoレーザーの発射位置決定部分を、

コード:

1番目のレーザーは「1」人目のsevenから。
2番目のレーザーは「1」人目のsevenから。
3番目のレーザーは「1」人目のsevenから。
4番目のレーザーは「1」人目のsevenから。
…略。
このようにすれば問題は解決するのではないでしょうか。

[hr]追記。
sevenoがsevenより先に配置されてますけど大丈夫ですか?

へにっくす

Re: 移動するキャラに連続ショットを撃たせることができません

#8

投稿記事 by へにっくす » 13年前

弾丸オネエ さんが書きました:それと、インデント、とは整形機能だということは聞いたことはありますが
まだプログラミングを始めたばかりなのでよくわかりません。
私はVisual C++を使わせていただいています。
インデントのショートカットキー(?)があることは聞いたことはありますが、
具体的にどのようなことをすればいいのでしょうか?
それをすることの利点はなんでしょうか?
教えていただければ幸いです。
Visual Studio 2005のやり方ですが、たぶんVisual Studio 2010まで同じかと思う。
コードを全部選択して、
編集メニューの詳細→選択範囲のフォーマット
をすると、インデントをそろえてくれます。

インデントをそろえることによって
{ } の対応が分かりやすくなる利点があります。

貴方の掲示したソースは、ちゃんと {} の対応が取れていますが、
見た目にはぱっと分かりませんよね?
インデントそろえていないソースを掲示すると、それを見た人は「答える気にならない」気分になります。
質問するなら、インデントをせめてそろえてください。
最低限の礼儀だと思いますが…

アップルミスト
記事: 21
登録日時: 13年前

Re: 移動するキャラに連続ショットを撃たせることができません

#9

投稿記事 by アップルミスト » 13年前

へにっくすさん
ご説明ありがとうございました。
これからはインデントをそろえてからソースを掲示するようにします。
読みにくいソースを提示してすみませんでした。

kurainさん
お返事ありがとうございます。
まだできてはいないのですが、改善するところが明確になりました。ありがとうございます。
もう少し粘ってみます。

閉鎖

“C言語何でも質問掲示板” へ戻る