わかる人がいたら教えてください!!

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
shiro_yuki
記事: 12
登録日時: 12年前

わかる人がいたら教えてください!!

#1

投稿記事 by shiro_yuki » 12年前

ゲームプログラミング歴がまだ浅い高校生ですが、
サンプルプログラミングの館にて

リンゴを拾うゲームのプログラミングのソースコードを触って試しながら
ゲームプログラミングを頑張っていこうとしています!

リンゴをキャラクターが拾ったら、リンゴを拾った個数の分だけが
ゲームのアプリケーション上に
立ち上がるようにするにはどうすればよいのでしょうか・・・・・。

考えてみましたが、初心者の自分にはわからなかったです・・・・・・・。

このゲームのダウンロードリンク先
サンプルプログラミングの館
リンゴの落ちゲー
http://dixq.net/sm/d3.html

------------------------------------------------------------------------------------------------
PC環境
FUJITSU ESPRIMO
OS: Microsoft Windows Vista Business Service Pack 2 32bit
RAM: 2GB
CPU: Intel Core 2 Duo CPU E7300 @ 2.66GHz TB 2.67GHz
使用しているプログラミングソフト: Microsoft Visual Studio 2008 Professional Edition

------------------------------------------------------------------------------------------------

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#2

投稿記事 by softya(ソフト屋) » 12年前

すいません。具体的にどうなるのかよく分かりません。

>リンゴをキャラクターが拾ったら、リンゴを拾った個数の分だけが
>ゲームのアプリケーション上に
>立ち上がるようにするにはどうすればよいのでしょうか・・・・・。

何が何処に立ち上がるのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#3

投稿記事 by shiro_yuki » 12年前

例えば、
バケットのなかにりんごが入ったら
一個入りましたー!と文字でテキスト表示させたいです!

りんごが2個、3個はいるごとに、
2個入りましたー!、3個入りましたー!とように
ゲームの状況に応じて、
今まで入った個数を表示させたいなと思っています!!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#4

投稿記事 by softya(ソフト屋) » 12年前

どこから分からないのでしょうか?

1.りんごのカゴに入った個数のカウント
2.画面に個数をテキスト表示させる方法
3.表示させたら一定時間後に消しさる方法
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#5

投稿記事 by shiro_yuki » 12年前

1、2、3番よかったら教えてください!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#6

投稿記事 by softya(ソフト屋) » 12年前

shiro_yuki さんが書きました:1、2、3番よかったら教えてください!
ゲームプログラミングの勉強ですよね。
お手伝いしますので、まず自分で考えないと勉強になりません。
さて、まず1としてりんごがカゴに入ったのはソースコード何処でわかるでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#7

投稿記事 by shiro_yuki » 12年前

<code>
int bullet_kago_exit(int i){

if(ch.x-20<bullet.x && bullet.x<ch.x+20 && ch.y-40<bullet.y && bullet.y<ch.y-35)
return 1;
return 0;
</code>

たぶん推測ですが、もしも、かごの中にりんごがはいったら
return 1
1になる→りんごがカゴの中に入ったことになる
そしたら0に戻る なくなるという感じでしょうか・・・・・・。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#8

投稿記事 by softya(ソフト屋) » 12年前

bullet_kago_exit()が、その判定をする関数だとして、それを確認する良い方法は無いでしょうか? 考えてみ下さい。
ヒント:PrintfDX();デバッグ用の関数。
「DXライブラリ置き場 リファレンスページ」
http://homepage2.nifty.com/natupaji/DxL ... raph3.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#9

投稿記事 by shiro_yuki » 12年前

printfDXは、C言語でも同じようにアプリケーション上に文字を表示させるようにするのが
printfDX関数であり、printfDX関数のなかに、

printfDX(リンゴのかご);

といった感じでしょうか・・・・・・。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#10

投稿記事 by softya(ソフト屋) » 12年前

shiro_yuki さんが書きました:printfDXは、C言語でも同じようにアプリケーション上に文字を表示させるようにするのが
printfDX関数であり、printfDX関数のなかに、

printfDX(リンゴのかご);

といった感じでしょうか・・・・・・。
printfDX(リンゴのかご);だとprintfの書式としても間違っています。printfの書き方はご存知でしょうか。
あと条件式が必要では? → ソースの書く場所次第ではいらないですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#11

投稿記事 by shiro_yuki » 12年前

printf(" 文字列\n");
これがprintfの書き方じゃないんですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#12

投稿記事 by softya(ソフト屋) » 12年前

shiro_yuki さんが書きました:printf(" 文字列\n");
これがprintfの書き方じゃないんですか?
そうですね。
printfDX(リンゴのかご);
とは違いますよね。「リンゴのかご」は文字列の定数になっていません。
あと何処にどのように書くかも重要です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#13

投稿記事 by shiro_yuki » 12年前

もしりんごがカゴのなかにはいったら
return 1になり
入ったときに、最初は0であり、
入ったら、そのbulletと連動して、
a=0;
ringocount=a++;

これをいれてあげて、
printfDX関数で
printfDX("ringocount\n");

こんな感じでしょうか・・・・・・。
もし初心者の自分ですが、だめでしたら指摘お願いいたします・・・・・。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#14

投稿記事 by softya(ソフト屋) » 12年前

shiro_yuki さんが書きました:もしりんごがカゴのなかにはいったら
return 1になり
入ったときに、最初は0であり、
入ったら、そのbulletと連動して、
a=0;
ringocount=a++;


この場合、後置インクリメントを代入で使う必要もないですし、後置インクリメントの代入の使い方として文法的には問題が無いですが意図している事からすれば間違っています。
そもそもaと言う変数はいらない気が。
あと、何処に書くコードなのかの説明になっていませんので前後のソースコードを記載して下さい。
※codeタグもご利用下さい。

shiro_yuki さんが書きました: これをいれてあげて、
printfDX関数で
printfDX("ringocount\n");

こんな感じでしょうか・・・・・・。
もし初心者の自分ですが、だめでしたら指摘お願いいたします・・・・・。


printfDX("ringocount\n");だとカウント値の表示ではなくringocountと言う文字列の表示です。
printfの書式を再確認して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#15

投稿記事 by shiro_yuki » 12年前

もし、リンゴがカゴのなかにはいって
1になったとき
int a=ringocount+1
if(ringo.flag==1)
ringocount++
else
ringocount+=0

そして、
printfdx(%dだけリンゴはいりました!,a)
このような感じに自分で考えてみました!
たぶん指摘されるかと思いますが
よろしくお願いします!

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

Re: わかる人がいたら教えてください!!

#16

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

・C言語/C++で全角文字を使用する必要はありません。
・ほかの場所で使用しない場合、変数aは無駄です。printfdxでも素直にringocountを表示すればいいのではないですか?
・ringocount+=0は無駄です。(演算子のオーバーロードをしていない場合)
・C言語/C++では、文の最後はセミコロンを付けましょう。
・C言語/C++では、文字列リテラルはダブルクォーテーションマークで囲む必要があります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#17

投稿記事 by shiro_yuki » 12年前

少し返信が遅れてしまいました。
yukiです。

試してみたのですが、リンゴの個数をカウントすることができず、
ずっとスコア上では、0、0、0、とずっと0個の状態のままになってしまいます・・・・・・。
もし、わかりましたら教えてください・・・・・。

あと、ソースコードを載せておきます。
まだ、下のものは、未完成の状態で完成していないものです。

コード:

void bullet_calc(){
	int i;
	int Color;

	Color = GetColor( 0,255,0);

	for(i=0;i<BULLET_MAX;i++){
		if(bullet[i].flag==1){
			if(bullet[i].cnt==bullet[i].till){
				PlaySoundMem(sound_se[0],DX_PLAYTYPE_BACK);
				bullet[i].drop_flag=1;
			}
			if(bullet[i].drop_flag==1){
				bullet[i].x += cos(bullet[i].angle) * bullet[i].spd;
				bullet[i].y += sin(bullet[i].angle) * bullet[i].spd;
				if(bullet_kago_exit(i)==1){
					bullet[i].flag=0;
					PlaySoundMem(sound_se[1],DX_PLAYTYPE_BACK);
				}
				if(bullet_feeld_exit(i)==1)
					bullet[i].flag=0;
			}
			bullet[i].cnt++;
		}
	}
	}
	DrawFormatString( 450, 120, Color,"リンゴの個数は %d です\n",a);
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#18

投稿記事 by softya(ソフト屋) » 12年前

bullet_calc内でaが計算されていないので、このaが何処でどのように処理されているか分からりません。
これだと正しいか正しくないかの判断ができませんよね。
もし処理していなら、値が変わらないの当然と言えます。

例えるなら、誰も触らない箱の中に勝手に物が増えることはオカルトだということです。
※ aと言う変数を箱に例えています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shiro_yuki
記事: 12
登録日時: 12年前

Re: わかる人がいたら教えてください!!

#19

投稿記事 by shiro_yuki » 12年前

さっきのせたソースコードの中に、
下記の何行かを加えたらいいのでしょうか・・・・・・。

コード:

if(bullet[n].drop_flag==1){
    a = a + 1;
}

こんな感じでしょうか・・・・・・。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わかる人がいたら教えてください!!

#20

投稿記事 by softya(ソフト屋) » 12年前

それは試したほうが早いですね。
私はプログラミングを理解して欲しいので、ヒントしか出しませんがやってみることが一番理解に繋がるんでやってみてください。
試してうまく行かなかったら、うまくいかないソースコードを投稿してくださいね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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