當前位置:遊戲中心平台 - 遊戲盒子 - 用余數知識做遊戲。

用余數知識做遊戲。

這位同學,經過我的研究,我得出了以下結論:

兩個學生用n張卡玩遊戲。兩個人輪流拿卡,每人壹次至少拿1張。最多帶m卡,不要留。拿到最後壹張牌就贏了。

獲勝的最佳方式是:

輪到妳拿卡時,妳總是拿卡“剩余卡數除以(m+1)的余數”獲勝。這樣拿不到牌就輸了!

如果妳學過C語言,請看下面這個表達式。

num = rest cards %(m+1);

我給妳寫了個C程序,電腦先贏。可以參考壹下。

================================================================

/*************************************************************

*紙牌遊戲人機遊戲程序

*

* =附件:取牌遊戲規則=

*

*兩個學生用38張牌玩遊戲。

*兩人輪流取牌,每人每次至少取1張,最多取4張,不允許不取。

*拿到最後壹張牌就贏了。

*

*雷磊

*嗨@leilei.name

* qq:20739111

*/

# include & ltstdio.h & gt

#define CARDS_MAX 38 //定義卡片總數。

#define GET_MAX 4 //定義壹次取卡的最大數量。

#define MAN 1 //定義者的代碼

#定義計算機0 //定義計算機的代碼名。

char LeftCards = CARDS _ MAX//初始化本地面板

char CurrentPlayer =計算機;//為計算機操作初始化

char BestMove//最好的方法

void ChangePlayer(){

CurrentPlayer = 1 -當前播放器;//換收卡人,要麽0,要麽1。

}

//可以根據取卡數取卡的函數。

char MakeOneMove(char num){

if(num & lt;= GET_MAX) {

left cards = left cards-num;

change player();

返回1;//返回成功取卡。

}

返回0;//無法取回卡。

}

//函數讓計算機得到卡(這是關鍵)

void ComputerThink(){

字符數;

num = left cards %(GET _ MAX+1);

if(num == 0){

best move = 1;//如果拿不到最好的牌數,就拿壹張。也可以設置壹個隨機數。

}

否則{

BestMove = num

}

MakeOneMove(best move);

}

//顯示當前剩余的牌數。

char ShowCards(){

Printf ("%d張卡片\n\n ",left cards);

}

int main(){

字符數;

Printf("取卡遊戲開始:\ n ");

while(1){

ShowCards();

if(LeftCards == 0){

if(CurrentPlayer == COMPUTER){

Printf("恭喜妳,妳贏了!\ n ");

}否則{

Printf("對不起,再接再厲!\ n ");

}

打破;

}

if(CurrentPlayer == COMPUTER){

computer think();

Printf("電腦帶%d張卡\n ",best move);

}否則{

Printf("請拿卡(1-%d):",GET _ MAX);

scanf("%d ",& ampnum);

if(MakeOneMove(num)){

Printf("妳拿了%d張卡\n ",num);

}

}

}

返回0;

}

  • 上一篇:我爸爸,總是喝酒,是個混蛋。
  • 下一篇:如何利用鄉土遊戲提高孩子動手能力的培養
  • copyright 2024遊戲中心平台