• ベストアンサー

あっち向いてホイのプログラムについて・・・

あっちむいてほいのプログラムを作りたいんですが コンピューターにランダムに上下左右を選ばせる プログラムが分かりません。 どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • crimson
  • ベストアンサー率40% (900/2202)
回答No.1

C/C++はかじり出したばかりなもので(^^;)、とりあえず ソースコードではなく発想の一般論として言えば、 (1) 乱数を発生させる。 (2) 4で割る。 (3) 余りが0→上、1→下、2→左、3→右と割り当てる。 …てな感じでどうでしょうか?

kururin
質問者

お礼

ありがとうございます。 もしよろしかったらcrimsonさんにも KOH_daにお願いした質問をお願いしたいのですが…

その他の回答 (2)

  • KOH_da
  • ベストアンサー率31% (161/506)
回答No.3

4月からなら楽勝だと思うんですけど...。 もしかして教える人の技量が低いか、 学生側に問題があるかのどちらかだと思います。 それはさておき...。 もう一度、じゃんけんに...ではなく、 while+breakの組み合わせを覚えると便利です。 こんな感じです。 メインからは...  while() {   janken();   hoi();   if(やめ) break;  } というように呼び出すものとして、 void janken() {  while(1) {   じゃんけん処理;   if(決着がついた) break;  } } なんて処理はいかがでしょうか。 じゃんけんの勝敗などは、 すべてグローバル変数で受け渡すものとします。

  • KOH_da
  • ベストアンサー率31% (161/506)
回答No.2

ホントに作りたいと思ってるの? 作らなきゃならない事情があるんでしょ(笑)。 プログラムの始めの方で、   srand(time(NULL)); ランダムに上下左右は、   w = rand() % 4; くらいが無難だと思います。 0-3の値が得られるので、得られた値によって、 上下左右の処理に振り分ければいいです。 time()を使うので、#include <time.h>もいります。

kururin
質問者

補足

実は学校で課題としてでてるんです…(笑) 回答ありがとうございます。 あともう1つ質問したいんですが…よろしいでしょうか? ある程度までプログラムを実行したところで 指定したある場所に移動するようにするにはどうしたらいいでしょうか? 例えば、じゃんけんで勝ったけどあっち向いてホイのところで向きが一致 しなかったらもう一度じゃんけんに戻りますよね? そういう場合はどうしたらいいんでしょうか?? 4月にCをやり始めたんですが授業でそこらへんのところはまだやってないんですよ。 それで作れって言うほうがおかしいと思うんですが、出さないと単位が…

関連するQ&A

  • プログラムが作りたい

    プログラミング初心者です。3日前に入門サイトの説明に従い無料のDelphiをインストール。 サンプルコードを見ながら打ち込んだりして、「Hello,World」と表示させたり簡単な足し算をしておりました。そして思いついたことがありまして質問させていただく次第です。 (1)条件分岐、乱数、繰り返しを使いたい (2)そして簡単なゲームを作ってみたい この二点なのですが、プログラムとしては ・コンピュータが1~13よりランダムに数を1つ決定 ・Highボタンは8以上なら勝ち、Lowボタンは6以下なら勝ち、7ならもう一度 ・3連勝したら終わり というダブルアップゲームを作りたいのですが、実際どういう手順でコードを書くべきものなのか良く分かりません。 一つ一つの構文の働きはサイトの解説で何となく分かるのですが一連の流れというのでしょうか、プログラムとしての感覚が掴めません。 具体的にどのようにコードを書けばこのプログラムが出来るでしょうか。

  • Cのプログラミングについての質問です

    全零で任意のサイズの二次元配列を用意して、その中の要素の一つをランダムに選んで1に初期化する。 その選んだ要素の上下左右どれか一つをランダムに選んで1に初期化する。 再び1に初期化した要素を選んだら今度は0に初期化する。 以上の処理を任意の回数繰り返して、1同士が必ず上下左右で隣接してる配列を生成したいのですが、 どのように書いたら実現できるでしょうか。

  • 多人数のじゃんけんプログラム

    多人数でのじゃんけんプログラムを作成しています。 設定としては、 自分とコンピュータのじゃんけん大会 コンピュータの参加人数は最大で10人、 コンピュータの参加人数は自分で任意選択(1~10人)、誰か参加するかはランダム 出す手は、(自分の手→任意に選択)(コンピュータの手→参加者ごとにランダムで設定) 自分・コンピュータ(1~10)に固有の名前を与えてそれぞれの勝ち数をカウントする じゃんけん終了後、買った回数順に順位をつけて、1位から順に表示する。 ↑のようなプログラムを作成したいと思っております。 私が悩んでいる点は、じゃんけんの結果判定の方法と勝ち数ごとの順位付け・並び替えの方法です。(全部ですね・・・) 結果の判定方法は、 場に出ている手が2種類なら(勝ちか負け)、1種類・3種類なら(あいこ)とし、 2種類の場合には、出ている手と比較し勝敗判定を行う、 という形がいいのかなと思ってます(javaでどう書けばいいのかはわかりません--;) 並べ替えは、配列をうまく使えばいけるでしょうか? ネットやテキストなどで学習中ですが全体的にわからない点が多く、 考え方(結果判定・順位付け&並び替え)やソースサンプルなどお教えいただけると嬉しいです。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • Java
  • 迷路の作り方

    WinXP Flash8で迷路を作りたいと思っています。 矢印キーで自分が上下左右に動き、ゴールを目指す。途中にランダムに出てくる障害物というようにしたいのですが。 「タイル上の正方形のmcを作って、上下左右に動ける範囲を限定した必要な種類を用意しマップの中に並べる」 「いくつか障害物の位置を決め、ランダムに配置する」 という考え方でできるでしょうか?

  • プログラム 教えてください

    1.INPUT文で入力された整数kに対し,3以上7以下の整数をランダムに(等確率で)k個生成し,同じ行に表示させるプログラム 2.INPUT文で入力された整数m, n, kに対し,m以上n以下の整数をランダムに(等確率で)k個生成し,同じ行に表示させるプログラム を教えてください。

  • C言語プログラム 作ってくれませんか?m(__)m

    C言語 プログラム 1~45の数字の中からランダムに15ペアの組み合わせと残りの数字を表示するようなプログラムをつくりたいのですが,どなたか作ってくれませんか? 以下のような表示例みたいなのが,嬉しいです。お願いします。 Ex. ./ random 6 -27 5 -22 4 -19 1 -21 15 -14 33 -40 17 -36 37 -28 13 -42 23 -41 34 -24 7 -35 38 -11 12 -8 26 -18 43 9 3 25 16 2 44 29 30 39 45 10 20 32 31

  • プログラム(BASIC) 教えてください

    (1) INPUT文で入力した整数 k に対し, 3, 5, 7, 9 のいずれかの値をランダムに等確率で発生し,改行せず横に続けて k個 表示させるプログラム (2)初項 a ,公差 r ,長さ n の等差数列 a, a+r, a+2r, ..., a+(n-1)r のいずれかの値を等確率で発生させるためには,乱数をどのような式で作れば良いか? INPUT文で与えられた a, r, n, k に対して,この等差数列のいずれかの値をランダムに k 個表示させるプログラム (1)は0,2,4,6を考えてから+3すればいいと思うのですがランダムに0,2,4,6を表示するプログラムの仕方が分かりません。 10 INPUT k 20 FOR L=1 TO k 30 RANDOMIZE 40 PRINT INT(   )+3; 50 NEXT L 60 END 解説があるとありがたいです。

  • 画像を動かすには・・・?

    今HPを作っていて、画像を上下左右・斜方向ランダムで動かしたいと思っているのですが、どうすればいいでしょうか? 動かす画像のサイズは80*80で、4~5個くらい動かしたいと思っています。

  • プログラムについて

    1から453までのあいだでランダムに取得された225個の数字をいったんranに格納し、同様にran2,ran3,ran4にもランダムに取得された225個の数字を格納します。そこでran~ran4までで取得された数字の中から全部に共通して格納されている数字だけをran5に格納するようなプログラムは作成できないでしょうか? ranに格納するまでのプログラムは以下のように作成しました import java.util.*; public class RandomTest { public static void main(String[] args) { for(int i=0; i<225; i++){ int ran = (int)(Math.random() * 452)+1; System.out.println(ran); } } }

    • ベストアンサー
    • Java
  • プログラムについて

    プログラムの作り方教えてください。 できればプログラマーなどのコンピューター技術者のひと教えてください。お願いします。 あと種類は色々お願いします。 ぜひ答えて下さい。