投稿
nyannzi CornedBeef
競馬みたいなゲームを練習に作ろうとしているのですがアドバイスお願いします。公開キー「QD4343XD」鶏レースです。 今の書き方だと同時にゴールに着いたとき着順が上がらないのを解消したいのと着順と一緒に鶏の番号を表示したいのですが何か方法はないでしょうか?
4そうだね
プレイ済み
返信[1]
親投稿
まーくん MARK6502
1.着順について 同着ゴールの着順をどうするか(仕様)によって、処理が変わりますね。 同着ゴールは着順は同じで表示とするなら、着順は上がらなくてもいいのではないかと思います。 また、今の処理が思ったように動いてくれない要因としては、@GOALの中で、X座標をいじってしまっていることだと思います。 @GOALは着順表示とGOAL後の処理だけにして、移動は分けた方が、整理しやすいように思います。
0そうだね
プレイ済み
返信[2]
親投稿
まーくん MARK6502
2.鶏の番号表示について 今の処理なら、処理している鶏の番号も変数に持っておいて、それを表示するようにすることになると思います。 ただ、今の処理の問題としては、4トラックなら、良いですが、これが10トラックにしたいとなったら、トラック毎の処理を10回コーディングしなければなりませんね。 殆どが同じコーディングのコピーになるので、このようなケースではトラックの管理情報を各々の配列に持って、トラックの番号を配列のインデックスにして処理すれば、各々の処理は1つのコーディングで済ませられます。 鶏の番号もインデックスで持っているのでそれを使えば良いことになります。
0そうだね
プレイ済み
返信[3]
親投稿
まーくん MARK6502
2.の補足です。 問題点と書きましたが、改善点ですね。 今は、プログラミングに慣れるために、まずは動くものということで、作っていただくのは良いと思います。 ただ、この先、もう少し本格的なゲームプログラムを作ろうとすると、このことは避けて通れなくなります。 例えば、インベーダーゲームのように敵の数が100個もあるようなゲームのプログラムを作ろうとしたら、同じコーディングを100回しなければならなくなります。 なので、同じような処理でたくさんのオブジェクトを扱う方法として覚えていただけるとよいと思います。
0そうだね
プレイ済み
返信[4]
親投稿
まーくん MARK6502
例です。 DIM TX[4] DIM TY[4] (前処理省略) FOR I=0 TO 3 TX[I]=TX[I]-RND(3) LOCATE TX[I],TY[I] PRINT "●" NEXT I こんな感じで、4トラック分の移動処理が書けます。 鶏の番号は、I+1で表示できます。 こんな感じで、初期化、移動、ゴール判定などをトラック分ループして、ループのインデックスで各々の配列にアクセスする。 という処理になります。
0そうだね
プレイ済み
返信[5]
親投稿
nyannzi CornedBeef
ありがとうございます! 見辛くてどうにかしたいと感じていたので目から鱗です。 着順は同着なしの白黒着けたいです。 PRINTのタイミングかな? とりあえずいじってみます♪ ありがとうございました!
0そうだね
プレイ済み