日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

练习:尼姆游戏(聪明版/傻瓜式•人机对战)

發布時間:2024/3/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 练习:尼姆游戏(聪明版/傻瓜式•人机对战) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

??尼姆游戲,這是一個著名的游戲,有很多變種玩法。兩個玩家輪流從一堆物品中拿走一部分。在每一步中,玩家可以自由選擇拿走多少物品,但是必須拿走一部并且最多只能拿走一半物品,然后輪到下一個玩家。拿走最后一個物品的玩家輸掉游戲。先手隨機。(2021-12-08 :44)我已優化代碼,當時app更新,不支持修正已發博文,另發一篇《尼姆游戲修正優化版》。

代碼運行效果


回首頁

python代碼

#/sur/bin/nve python # coding: utf-8 import os #用os.system(r'clear')清屏 import random #用random.randint()隨機取數def clear():'''#Linux清屏'''clear = os.system(r'clear')def optimal(n):'''機器最優拿法'''if n in (1, 2, 3, 4):return 1take = int(n/2)m = 1for i in range(take):if m>take:breakm *= 2take = n-m+1if take>int(n/2):take = random.randint(1, int(n/2))return takedef common(n):'''機器一般拿法'''while True:if n==1:return 1return random.randint(1, int(n/2))def effect(first, take, n):'''結果輸出'''cl()print('\n'*6)flag_s = ('簡單', '困難')[flag-1]print('%s\n'%('【%s】'%flag_s).rjust(20))print('﹊'*21)print(' '*4, end='')print('%s已取走%s。物品堆物品還剩%s。'%(first, take, n))print('﹊'*21)def show_error():'''報錯信息打印'''print('\n\n%s'%error)print('輸入錯誤!請重試。'.rjust(20))print('﹊'*21)input('任意鍵繼續……'.rjust(20))#Main Codes cl = clear s = '''尼姆游戲,這是一個著名的游戲,有很多變種玩法。兩個玩家輪流從一堆物品中拿走一部分。在每一步中,玩家可以自由選擇拿走多少物品,但是必須拿走一個并且最多只能拿走一半物品,然后輪到下一個玩家。拿走最后一個物品的玩家輸掉游戲。先手隨機。 ''' #規則打印 cl() print('\n\n%s'%'“尼姆”游戲規則'.rjust(20)) print() print('﹊'*21) print(s) print('﹊'*21) input('任意鍵繼續……'.rjust(20)) #難度選擇 while True:cl()print('\n'*6)print('\n%s'%'【難度選擇】'.rjust(20))print()print('﹊'*21)print('1. 簡單 2. 困難'.rjust(24))print('﹊'*21)try:flag = int(input('請選擇:'.rjust(12)))if flag not in (1, 2):error()continuebreakexcept Exception as error:show_error()#開始游戲 p = '小可愛' cl() print('\n'*6) while True:try:c = input('給對手命名:'.rjust(12))breakexcept Exception as error:error()continue if flag==2:n = random.randint(1, 500) else:n = random.randint(1, 100) cl() print('\n'*6) print('﹊'*21) print('%s\n'%'【本局游戲物品堆】'.rjust(21)) print(('%s:%3d'%('物品總數', n)).rjust(22)) print('﹊'*21) input('任意鍵繼續……'.rjust(20)) #隨機先手選擇 first = random.choice((c, p)) while n>0:#機器取if flag==2 and first==c:take = optimal(n)n = n-takeif flag==1 and first==c:take = common(n)n = n-takeif first==c:effect(first, take, n)if n==0:breakfirst = p #轉換玩家先手#玩家取if first==p:while True:try:take = int(input('\n%s'%'您取物:'.rjust(12)))if take==1 and (n in (1, 2, 3)):breakif take>int(n/2) or take<1:error()continue breakexcept Exception as error:show_error()n = n-takeif first==p:effect('您', take, n)input('任意鍵繼續……'.rjust(20))if n==0:breakfirst = c #轉換機器先手#結果輸出 if first==p:first = '您' cl() print('\n'*6) print('﹊'*21) print(('%s輸了!'%first).rjust(20)) print('﹊'*21)
此篇博文發文時沒有完善代碼,有些錯漏。修正后正值app更新到最新版本,不可以修改已發博文了,才另發一篇“練習:尼姆游戲(優化版)”。今天app再次更新,又能修正已發博文,在此加上后文鏈接。(2021-12-05)

回首頁

上一篇:?練習:任意多行字條串拆分數值求和&冒泡排序&兩數的最大公約數和最大公倍數
下一篇:?尼姆游戲(修正優化版)


回首頁

精品文章:

  • 通過內置對象理解python
  • Python 完全自學手冊
  • 海象運算符
  • Python中的 `!=`與`is not`不同
  • 學習編程的正確方法

來源:老齊教室


總結

以上是生活随笔為你收集整理的练习:尼姆游戏(聪明版/傻瓜式•人机对战)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。