一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python實現尼姆游戲

python實現尼姆游戲

2022-03-11 10:01夢幻精靈_cq Python

這篇文章通過詳細的python代碼實現尼姆游戲,小編覺得挺不錯的。現在分享給大家,也給大家做個參考,需要的朋友可以收藏下。一起跟隨小編過來看看吧

題目

尼姆游戲,這是一個著名的游戲,有很多變種玩法。兩個玩家輪流從一堆物品中拿走一部分。在每一步中,玩家可以自由選擇拿走多少物品,但是必須拿走一部并且最多只能拿走一半物品,然后輪到下一個玩家。拿走最后一個物品的玩家輸掉游戲。先手隨機。

 

代碼運行效果

python實現尼姆游戲

python實現尼姆游戲

python實現尼姆游戲

python實現尼姆游戲

python實現尼姆游戲

python實現尼姆游戲

python實現尼姆游戲

 

 

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 1
  take = int(n/2)
  m = 1
  for i in range(take):
      if m>take:
          break
      m *= 2
  take = n-m+1
  if take>int(n/2):
      take = random.randint(1, int(n/2))
  return take


def common(n):
  '''機器一般拿法'''
  while True:
      if n==1:
          return 1
      return 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()
          continue
      break
  except Exception as error:
      show_error()

#開始游戲
p = '小可愛'
cl()
print('\n'*6)
while True:
  try:
      c = input('給對手命名:'.rjust(12))
      break
  except 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-take
  if flag==1 and first==c:
      take = common(n)
      n = n-take
  if first==c:
      effect(first, take, n)
  if n==0:
      break
  first = p #轉換玩家先手
  #玩家取
  if first==p:
      while True:
          try:
              take = int(input('\n%s'%'您取物:'.rjust(12)))
              if take==1 and (n in (1, 2, 3)):
                  break
              if take>int(n/2) or take<1:
                  error()
                  continue 
              break
          except Exception as error:
              show_error()
      n = n-take
  if first==p:
      effect('您', take, n)
      input('任意鍵繼續……'.rjust(20))
  if n==0:
      break
  first = c #轉換機器先手
  
#結果輸出
if first==p:
  first = '您'
cl()
print('\n'*6)
print('﹊'*21)
print(('%s輸了!'%first).rjust(20))
print('﹊'*21)

到此這篇關于python實現尼姆游戲的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/m0_57158496/article/details/121645399

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性欧美xxxxx高清 | 久久久无码精品无码国产人妻丝瓜 | 亚欧洲乱码视频一二三区 | 免费高清特黄a 大片 | 精品无人乱码一区二区三区 | freese×video性欧美丝袜 | 国产精品免费久久久久影院 | 色依依视频视频在线观看 | 精品综合久久久久久88小说 | 午夜片无码区在线观看 | 特黄级| 九九精品视频一区二区三区 | 视频一区久久 | 国产欧美日韩精品一区二区三区 | 国内精品中文字幕 | narutomanga玖辛奈之乳 | 亚洲国产区 | 蜜臀91 | 草草视频在线观看 | 天天操天天草 | 精品无人区乱码1区2区3区免费 | 91麻豆精品国产片在线观看 | 国产在线xvideos | 91久久偷偷做嫩草影院免费看 | 亚洲福利一区二区 | 国产精品一区三区 | 无码区国产区在线播放 | 成年人在线免费看 | porono日本动漫 | 学校女性奴sm训练调教 | 日本无遮挡拍拍拍凤凰 | 国产精品毛片无码 | 国产一级在线观看视频 | 大妹子最新视频在线观看 | 日本嫩小xxxxhd | 日本高清免费不卡在线播放 | 男人狂躁女人下面的视频免费 | 被调教的校花 | 果冻传媒在线播放1 | 日本成熟 | 福利一区三区 |