C言語関係掲示板

過去ログ

No.19. スロットゲーム


こんにちは
ある関数をつくってそれをmain関数に
値を一つずつ返したいのですが
ちょっと分からなくなってきたので
誰か指摘してください。

__スロットゲーム___________________________________
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

typedef unsigned short _int;
#define REAL_MAX 3

int *real(int *ar,int a);
void reach(int *a);

void main()
{
_int Real[REAL_MAX];
_int i;
_int *re_real;

for(i=0;i<REAL_MAX;i++)
{
re_real=real(Real,i);

reach(re_real); /*この関数が間違って
          いると思うのですが*/
re_real++; /*絶対的にポインタを移動*/

}
}

int *real(int *ar,int a)
{
srand((unsigned)time(NULL));

for(;;){

*ar=rand()%9+1;

printf("\x1b[%d;%dH",10,10+a);

printf("%d",*ar);

if(kbhit()){

getch();

break;
}
}
   return ar; /*リターンキーを押して止まった数値
}            を返す*/

 void reach(int *a)  /*二つ目の数字がそろったら”リーチ”
{                 と表示する*/
if(*a==*(a+1))
printf("リーチ!!");

}
_____________________________________


realへの引数が更新されていません。

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

#define REAL_MAX 3
#define REACH 1

int *real(int *ar,int a);
void reach(int *a);

void main()
{
int Real[REAL_MAX];
int i;
int *re_real;

re_real = Real; /* ポインタの値の設定 */
for(i=0;i<REAL_MAX;i++)
{
/*re_real=real(Real,i);*/
re_real=real(re_real,i);
if (i==REACH) /* リーチを見るのはこのタイミングでは */
reach(re_real);
re_real++; /*絶対的にポインタを移動*/

}
}

int *real(int *ar,int a)
{
srand((unsigned)time(NULL));

for(;;){
*ar=rand()%9+1;
printf("\x1b[%d;%dH",10,10+a);
printf("%d",*ar);
if(kbhit()){
getch();
break;
}
}
return ar; /*リターンキーを押して止まった数値を返す*/
}

void reach(int *a) /*二つ目の数字がそろったら”リーチ”と表示する*/
{
/* if(*a==*(a+1)) 先のと比べても仕方ないのでは */
if(*a==*(a-1))
printf("\nリーチ!!");

}


ともじさんどうもありがとうございます。
ポインタと関数がまだあやふやです。
いろいろポインタと関数を使って
練習していきます。

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.8.8
Copyright(c) 2000-2002 TOMOJI All Rights Reserved