忍者ブログ
2007/1/12 超不定期にこの身に起こった出来事や社会に対する感想を勝手に述べるブログ(仮)
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最新コメント
[06/01 とんこ]
[03/13 マスター]
[03/02 げろたそ]
[03/01 ぷいにゅ]
[11/22 げろたそ]
最新トラックバック
プロフィール
HN:
gerochan(いくなーとん)
年齢:
-60
HP:
性別:
男性
誕生日:
2085/04/11
職業:
新米SE
趣味:
ウイイレ、奢らせること、買わせること
バーコード
QRコードから携帯でもご覧いただけますです。たぶん・・・
ブログ内検索
カウンター
19
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

/* 5/17 ***○×ゲーム***  */

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void display(int flg, int hantei, int h_ban[4][4], char *ban[10]);
int jvalue(int hantei_e, int hantei_t);
void cpu_att(int flg, int h_ban[4][4], int *, int *);
void cpu_def(int flg, int h_ban[4][4], int *, int *);

int main(){

 char *ban[10] = {"  ","  ","  ","  ","  ","  ","  ","  ","  "};
 int h_ban[4][4] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

 int y;      /* 行判定 */
 int x;      /* 列判定 */
 int hantei;     /* 行と列の和(a,1なら1 b,2なら5) */
 int flg=1;     /* ○×判定フラグ ○:1, ×:2, null:0 */
 int playban, tekazu=0;  /* 何手目か */
 int jug=0;

 int i, j;

 int win1[4] = {0,0,0,0};
 int win2[4] = {0,0,0,0};
 int crosswin1;
 int crosswin2;

 printf(" \ [1] [2] [3] \n");
 printf("[1]  %s   %s   %s  \n",ban[0],ban[1],ban[2]);
 printf("[2]  %s   %s   %s  \n",ban[3],ban[4],ban[5]);
 printf("[3]  %s   %s   %s  \n",ban[6],ban[7],ban[8]);

 printf("あなたは先手(0)後手(1)?\n");
 scanf("%d",&playban);

 while(tekazu != 9){

  if(tekazu%2 == playban){
   rewind(stdin);
   printf("\n1Pの番 縦(1,2,3):");
   scanf("%d",&y);
   if(y >= 1 && y <= 3){
    printf("1Pの番 横(1,2,3):");
    scanf("%d",&x);
    if(x <=0 || x >= 4){
     continue;
    }
   }
   else{
    continue;
   }

   if(h_ban[y][x] != 0){
    printf("もう置いてあるぽ(・ε・)\n");
    continue;
   }
  }
  else{

   printf("\nCPUの番\n");

   cpu_att(flg, h_ban, &y, &x);

   for(;;){
 
    if(h_ban[y][x] != 0){
     cpu_def(flg, h_ban, &y, &x);
    }
    if(h_ban[y][x] != 0){
     srand(time(NULL));
     y = rand()%3+1;
     x = rand()%3+1;
     continue;
    }
    else{
     break;
    }
   }  
  }
  
  display(flg, jvalue(y, x), h_ban, ban);

 /******* 勝敗判別 *******/
 for(i=1; i<=3; i++){
  win1[i] = 100 * h_ban[i][1] + 10 * h_ban[i][2] + h_ban[i][3];
  win2[i] = 100 * h_ban[3][i] + 10 * h_ban[2][i] + h_ban[1][i];
 }
  crosswin1 = 100 * h_ban[1][1] + 10 * h_ban[2][2] + h_ban[3][3];
  crosswin2 = 100 * h_ban[3][1] + 10 * h_ban[2][2] + h_ban[1][3];
  
 for(i=1; i<=3; i++){
  if(win1[i] == 111 || win2[i] == 111 || crosswin1 == 111 || crosswin2 == 111){
   jug = 1;
   break;
  }
  else if(win1[i] == 222 || win2[i] == 222 || crosswin1 == 222 || crosswin2 == 222){
   jug = 2;
   break;
  }
  else{
   jug = 0;
  }
 }
 
  switch(jug){

   case 0:
     break;
   case 1:
     printf("○の勝ち");
     return 0;
   case 2:
     printf("×の勝ち");
     return 0;
  } 
  
  tekazu++;

  if(flg == 1){
   flg = 2;
  }
  else{
   flg = 1;
  }

 }
 printf("引き分けよ♪\n");

 return 0;
}

/******* ○×を表示する関数 *******/
void display(int flg, int hantei, int h_ban[4][4], char *ban[10]){

  switch(hantei){
   case 1:
     if(flg == 1){
      h_ban[1][1] = 1;
      ban[0] = "○";
      break;
     }
     if(flg == 2){
      h_ban[1][1] = 2;
      ban[0] = "×";
      break;
     }
   case 2:
     if(flg == 1){
      h_ban[1][2] = 1;
      ban[1] = "○";
      break;
     }
     if(flg == 2){
      h_ban[1][2] = 2;
      ban[1] = "×";
      break;
     }
   case 3:
     if(flg == 1){
      h_ban[1][3] = 1;
      ban[2] = "○";
      break;
     }
     if(flg == 2){
      h_ban[1][3] = 2;
      ban[2] = "×";
      break;
     }
   case 4:
     if(flg == 1){
      h_ban[2][1] = 1;
      ban[3] = "○";
      break;
     }
     if(flg == 2){
      h_ban[2][1] = 2;
      ban[3] = "×";
      break;
     }
   case 5:
     if(flg == 1){
      h_ban[2][2] = 1;
      ban[4] = "○";
      break;
     }
     if(flg == 2){
      h_ban[2][2] = 2;
      ban[4] = "×";
      break;
     }
   case 6:
     if(flg == 1){
      h_ban[2][3] = 1;
      ban[5] = "○";
      break;
     }
     if(flg == 2){
      h_ban[2][3] = 2;
      ban[5] = "×";
      break;
     }
   case 7:
     if(flg == 1){
      h_ban[3][1] = 1;
      ban[6] = "○";
      break;
     }
     if(flg == 2){
      h_ban[3][1] = 2;
      ban[6] = "×";
      break;
     }
   case 8:
     if(flg == 1){
      h_ban[3][2] = 1;
      ban[7] = "○";
      break;
     }
     if(flg == 2){
      h_ban[3][2] = 2;
      ban[7] = "×";
      break;
     }
   case 9:
     if(flg == 1){
      h_ban[3][3] = 1;
      ban[8] = "○";
      break;
     }
     if(flg == 2){
      h_ban[3][3] = 2;
      ban[8] = "×";
      break;
     }
  }
  printf(" \ [1] [2] [3] \n");
  printf("[1]  %s   %s   %s  \n",ban[0],ban[1],ban[2]);
  printf("[2]  %s   %s   %s  \n",ban[3],ban[4],ban[5]);
  printf("[3]  %s   %s   %s  \n",ban[6],ban[7],ban[8]);
}

/******* 判定計算関数 *******/
int jvalue(int y, int x){

 int hantei;
 int a;
 

 if(y == 1){
  a = 0;
 }
 else if(y == 2){
  a = 3;
 }
 else if(y == 3){
  a = 6;
 }

 hantei = a + x;

 return (hantei);

}

/******* CPUの思考るーちん(攻撃) *******/
void cpu_att(int flg, int h_ban[4][4], int *y, int*x){

 int i, j;
 int atai1 = 110, atai2 = 101, atai3 = 11;
 int denger1[4] ={0,0,0,0};
 int denger2[4] ={0,0,0,0};
 int denger3, denger4;

 if(h_ban[2][2] == 0){
  *y = 2;
  *x = 2;
 }
 else{
 
  for(i=1; i<=3; i++){
   denger1[i] = 100 * h_ban[i][1] + 10 * h_ban[i][2] + h_ban[i][3];
   denger2[i] = 100 * h_ban[1][i] + 10 * h_ban[2][i] + h_ban[3][i];
  }
   denger3 = 100 * h_ban[1][1] + 10 * h_ban[2][2] + h_ban[3][3];
   denger4 = 100 * h_ban[3][1] + 10 * h_ban[2][2] + h_ban[1][3];
  
  for(i=1; i<=3; i++){
   if(flg == 2){
    atai1 = 220;
    atai2 = 202;
    atai3 = 22;
   }
    
    if(denger1[i] == atai1 || denger1[i] == atai2 || denger1[i] == atai3){
     if(denger1[i] == atai1){
      *y = i;
      *x = 3;
      break;
     }
     else if(denger1[i] == atai2){
      *y = i;
      *x = 2;
      break;
     }
     else{
      *y = i;
      *x = 1;
      break;
     }
    }
    else if(denger2[i] == atai1 || denger2[i] == atai2 || denger2[i] == atai3){
     if(denger2[i] == atai1){
      *y = 3;
      *x = i;
      break;
     }
     else if(denger2[i] == atai2){
      *y = 2;
      *x = i;
      break;
     }
     else{
      *y = 1;
      *x = i;
      break;
     }
    }
    else if(denger3 == atai1 || denger3 == atai2 || denger3 == atai3){
     if(denger3 == atai1){
      *y = 3;
      *x = 3;
      break;
     }
     else if(denger3 == atai2){
      *y = 2;
      *x = 2;
      break;
     }
     else{
      *y = 1;
      *x = 1;
      break;
     }
    }
    else if(denger4 == atai1 || denger4 == atai2 || denger4 == atai3){
     if(denger3 == atai1){
      *y = 1;
      *x = 3;
      break;
     }
     else if(denger3 == atai2){
      *y = 2;
      *x = 2;
      break;
     }
     else{
      *y = 3;
      *x = 1;
      break;
     }
    }
  }
 }
}

 

/******* CPUの思考るーちん(防御)*******/
void cpu_def(int flg, int h_ban[4][4], int *y, int*x){

 int i, j;
 int atai1 = 110, atai2 = 101, atai3 = 11;
 int denger1[4] ={0,0,0,0};
 int denger2[4] ={0,0,0,0};
 int denger3, denger4;

 if(h_ban[2][2] == 0){
  *y = 2;
  *x = 2;
 }
 else{
 
  for(i=1; i<=3; i++){
   denger1[i] = 100 * h_ban[i][1] + 10 * h_ban[i][2] + h_ban[i][3];
   denger2[i] = 100 * h_ban[1][i] + 10 * h_ban[2][i] + h_ban[3][i];
  }
   denger3 = 100 * h_ban[1][1] + 10 * h_ban[2][2] + h_ban[3][3];
   denger4 = 100 * h_ban[3][1] + 10 * h_ban[2][2] + h_ban[1][3];

  for(i=1; i<=3; i++){
   if(flg == 1){
    atai1 = 220;
    atai2 = 202;
    atai3 = 22;
   }
    
    if(denger1[i] == atai1 || denger1[i] == atai2 || denger1[i] == atai3){
     if(denger1[i] == atai1){
      *y = i;
      *x = 3;
      break;
     }
     else if(denger1[i] == atai2){
      *y = i;
      *x = 2;
      break;
     }
     else{
      *y = i;
      *x = 1;
      break;
     }
    }
    else if(denger2[i] == atai1 || denger2[i] == atai2 || denger2[i] == atai3){
     if(denger2[i] == atai1){
      *y = 3;
      *x = i;
      break;
     }
     else if(denger2[i] == atai2){
      *y = 2;
      *x = i;
      break;
     }
     else{
      *y = 1;
      *x = i;
      break;
     }
    }
    else if(denger3 == atai1 || denger3 == atai2 || denger3 == atai3){
     if(denger3 == atai1){
      *y = 3;
      *x = 3;
      break;
     }
     else if(denger3 == atai2){
      *y = 2;
      *x = 2;
      break;
     }
     else{
      *y = 1;
      *x = 1;
      break;
     }
    }
    else if(denger4 == atai1 || denger4 == atai2 || denger4 == atai3){
     if(denger3 == atai1){
      *y = 1;
      *x = 3;
      break;
     }
     else if(denger3 == atai2){
      *y = 2;
      *x = 2;
      break;
     }
     else{
      *y = 3;
      *x = 1;
      break;
     }
    }
  
  }
 }

}


みっともないプログラムである(・ε・)が
一応形になったので上げてみた。
CPUがちょっと人間くさいのが特徴というか短所というか・・・w

だれかもっと強いの作って・・・OTL

ちなみにコレは基本的な対応だけ行い、あとは乱数まかせのプログラムですヾ(≧▽≦)

やっぱりあれだよね?あまりにも強いCPUがあってもつまらな・・・ヽ( ゚ 3゚)

明日からJava をやる予定ですが、俺は未経験なのでちょっと心配。
あ、そういえばやっと配属先が決まり、さらに希望通りになりましたーわぁいヽ(ω・ヽ)(ノ・ω)ノ わぁい♪

PR
お名前
タイトル
文字色
URL
コメント
パスワード
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Trackback URL
Copyright c げろたんの超だらだら日記 All Rights Reserved
Powered by ニンジャブログ  Designed by ピンキー・ローン・ピッグ
忍者ブログ / [PR]