oresama777のプロフィール

@oresama777 oresama777
ありがとう数3
質問数0
回答数12
ベストアンサー数
1
ベストアンサー率
16%
お礼率
0%

  • 登録日2010/06/16
  • 性別男性
  • 都道府県東京都
  • c言語の配列操作

    c言語で、hairetu[8][8]があったとして、その中でいくつかの中に1が入っていて、そのほかは0が入っているとします。 0 1 2 3 4 5 6 7 0|1 0 0 0 1 1 1 0 1|1 0 0 0 0 0 0 1 2|0 1 1 0 1 0 1 1 3|・・・・・・・・・・・・ 4|・・・・・・・・・・・・ 5| 6|・・・・・・・・・・・・ 7|0 1 1 0 0 0 0 1 という具合です。 そのとき、ランダムで1を1箇所しかない状態にしたいのですが、 自分が考えた方法だと無駄が多いので、もっとスマートな方法はないかと思い質問させてもらいました。基本的な質問なのですがよろしくお願いします。 以下自分が考えた方法 [64][2]の配列を作成し、上記の[8][8]の配列をfor文で解析し、1が入ってるところの番号を配列[64][2]に格納する。 乱数を使い、ひとつだけ選択する。

  • C言語でクリックゲー(脱出ゲームみたいな)を作りたい。(windows

    C言語でクリックゲー(脱出ゲームみたいな)を作りたい。(windowsヘッダ利用 まず、私の今の知識は、明解C言語入門編1冊読んだのと、ウィンドウの表示、画像を指定の場所に 張り付ける、キーを押したら値を増やす、矢印ポインタの座標を表示する。ぐらいならできると思います。 画面内のとある場所(画像)をクリックしたら値を返す(別の画像を表示)といったことをしたいのですが どうしたらいいでしょう。 WM_LBUTTONDOWNっていうのを使うとクリックしたかどうかのメッセージはだせるっぽいのですが これを使えばできるのでしょうか?(クリックした座標・・・・・ ゲームプログラミングのサイトや本はいくつかでてますが キーボードのみで操作のゲームの作り方載せてるのが主流?のようで・・・ 暇なときにでも回答してもらえるとうれしいです。

  • FlexGridの一部のみ表示を更新したいのです。

    FlexGridの一部のみ表示を更新したいのです。 VisualStudio2003、C#でWindowsアプリを開発しています。 一覧表示にFlexGridを使用しています。 とある処理の中で、FlexGridに表示するデータの一部が変更されるので、 その変更値を画面に反映するためにFlexGridを再描画する必要があり、 Refreshしているのですが、一覧の再描画に時間がかかっています。 変更のあったセル、または1行のみ、再描画(表示を更新)する事は可能でしょうか?

  • プロポからのパルス値解析ソースのコンパイルエラー(PICマイコン)

    プロポからのパルス値解析ソースのコンパイルエラー(PICマイコン) いつもこちらでお世話になっております。 さて下記ソースコードはプロポの1Chと2Chからの出力パルスを ポートA0、A1ピンより、読み込みPC画面でその値を 確認する為のコードのつもりですが、 コンパイルが成功出来ずエラー行の表示はないのですが、 HEXファイルが作成しないので、大変困っております。 使用コンパイラーはCCS社C(PCM版)、 PICは16F873Aを使用してます。 以下に、コードを記述します。 #include <16f873a.h> ====プリプロセッサ部分の記述は省略================= この部分の設定は既に、1Chのみ数値確認で実証済みを記述。 =============================================== void main() { int data,data1; set_tris_a(0x0f); setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); while(1) { while (input(PIN_A0)); while (!(input(PIN_A0))); set_timer0(0); while (input(PIN_A0)); data = get_timer0(); printf("VALUE = %d\r\n",data); delay_ms(500); while (input(PIN_A1)); while (!(input(PIN_A1))); set_timer0(0); while (input(PIN_A1)); data1 = get_timer0(); printf("VALUE = %d\r\n",data1); delay_ms(500); } } 以上、while(1)コード内に構成上の問題があるのではと 思われますが何処にコンパイル上、無理が生じるのでしょうか? また、仮にこのコードでコンパイルが成功したとしても、 2つのチャンネルからの信号を読取る事が可能でしょうか? 目に留めて下さった方で、ご教示頂けるなら大変幸いです。 どうか宜しくお願いいたします。

  • C++でオセロのCPUの処理を考えたのですが、40手目あたりからうまく

    C++でオセロのCPUの処理を考えたのですが、40手目あたりからうまくいきません。ReverseOthello関数の石を探して裏返す処理がおかしいと思われます。一番裏返せる石が多い位置を裏返すという処理をしています。プログラミング経験が豊富な方よろしくお願いします。 #include "stdafx.h" bool Othello(int (*pBoard)[8] ){ int i; int j; int ans; int k = 0; int num[3] = {0,0,0}; int sum[28][3]; i = 0; while(i < 28){ j = 0; while(j < 3){ sum[i][j] = 0; j++; } i++; } i = 0; while(i < 8){ j= 0; while(j < 8){ if(pBoard[i][j] == 0){ ans = SeachStone(i,j,pBoard); if(ans != 0){ sum[k][0] = i; sum[k][1] = j; sum[k][2] = ans; k++; } } j++; } i++; } i = 0; while(i < 28){ if(num[2] < sum[i][2]){ num[0] = sum[i][0]; num[1] = sum[i][1]; num[2] = sum[i][2]; } i++; } if(num[2] == 0){ return false; } ReverseStone(num[0],num[1],pBoard); return true; } void ReverseStone(int y1,int x1,int (*pBoard)[8]){ int cnt = 0; int y2; int x2; int i; int j; int k; if(y1 == 0){ i = 0; } else { i = y1-1; } while(i < y1 + 2){ if(x1 == 0){ j = 0; } else { j = x1-1; } while(j < x1 + 2){ y2 = i; x2 = j; cnt = 0; while(pBoard[y2][x2] == -1){ y2 = y2 + (i - y1); x2 = x2 + (j - x1); cnt++; } if(pBoard[y2][x2] == 1&& cnt != 0){ k = 0; while(k < cnt + 1){ y2 = y2 + (y1 - i); x2 = x2 + (x1 - j); pBoard[y2][x2] = 1; printf("%d\n",pBoard[y2][x2]); k++; } } j++; } i++; } } int SeachStone(int y1,int x1,int (*pBoard)[8]){ int cnt = 0; int sumCnt = 0; int y2; int x2; int i; int j; if(y1 == 0){ i = 0; } else { i = y1-1; } while(i < y1 + 2){ if(x1 == 0){ j = 0; } else { j = x1-1; } while(j < x1 + 2){ y2 = i; x2 = j; cnt = 0; while(pBoard[y2][x2] == -1){ y2 = y2 + (i - y1); x2 = x2 + (j - x1); cnt++; } if(pBoard[y2][x2] == 1&& cnt != 0){ sumCnt = sumCnt + cnt; } j++; } i++; } return sumCnt; }