まだc言語を習って半年くらいです。
じゃんけんゲームを色々参考にしながら作ってみました。
コンピューターが相手のじゃんけんです。自分が出した手とコンピューターの出した手を比べて、相手の出した手と、勝ち負けを表示します。
2回勝つか負けるかすると、○勝○負○分と表示されプログラムは終了します。
以下がソースです。このソースで一応、目標としていた動作を行うことができるものは作れました。
しかし、疑問点があるためここで質問させていただきました。
#include <stdio.h> #include<string.h>
main()
{
int i=0,com,k=0,player,m=0;
char moji[7][10]={"グー","チョキ","パー","あいこ ","勝ち","負け","負け"};
srand((unsigned)time());
while((k<2)&&(m<2))
{
printf("じゃんけん勝負。2戦先勝方式。\n%d回 戦!最初はグー、じゃんけん・・・\n
1. グー 2 . チョキ 3. パー >",++i);
scanf("%d",&player);
com=rand()%3;
printf("%d",com);
printf("あいては%sで、%s。%d勝%d敗\n\n\n\n", moji[com],moji[(com-(player-1)+3)%3+3],
k= k+(player%3==com),m=m+((com-(player-3))% 3==1));
}
printf("%d勝%d敗%d分で,あなたの%s",k,m,i-( m+k),moji[6-k]);
}
この部分は参考にしたソースが存在するのですが、そのソースにも説明が書いておらず、なぜこの文で実行できるのか、凄く疑問です。
だれかわかる人がいらっしゃいましたら、お答えいただけると幸いです。
新参もので、何か不手際があるかもしれませんが宜しくお願いします。