int n,k;
int cnt; //剩余山的數目.
int tag; //輸贏狀態標記.
int cplayer=0,ccomputer=0;//各自輸贏局數.
void player();
void computer();
int main(){
printf("/**********歡迎進入搬山遊戲**********/\n");
printf("遊戲開始\n");
do{
printf("請輸入山的數目(若輸入0,則遊戲結束.):\n");
scanf("%d",&n);
if(n<0){
printf("輸入非法,遊戲結束.\n");
break;
}
if(n == 0){
printf("謝謝使用,再見!\n");
break;
}
printf("請輸入每次能搬動的最大數目(必須小於或等於山的數目頭減2):\n");
scanf("%d",&k);
if( k > (n-2) ){
printf("輸入非法,遊戲結束.\n");
break;
}
cnt = n;
while(cnt > 0){
player();
if(cnt <= 0){
tag=0;
break;
}
computer();
if(cnt <= 0){
tag=1;
break;
}
}
if(tag == 0){
printf("妳輸了,請再接再厲~!\n");
cplayer++;
}
if(tag == 1){
printf("妳真棒~!\n");
ccomputer++;
}
}while(1);
printf("妳***玩了%d局.\n",cplayer + ccomputer);
printf("妳贏了%d局.\n",cplayer);
printf("妳輸了%d局.\n",ccomputer);
}
void player(){
unsigned int c;
printf("請輸入妳要搬走的數目:\n");
scanf("%d",&c);
cnt -= c;
printf("妳搬走了%d座山,還剩下%d座.\n",c,cnt);
}
void computer(){
unsigned int c;
if( (cnt-1) <= k )
c = cnt-1;
else
c = (cnt - 1) % (k + 1);
if(c==0)
c = 1;
cnt -= c;
printf("計算機搬走了%d座山,還剩下%d座.\n",c,cnt);
}