使用numpy写出尼姆游戏Python代码
时间: 2024-05-07 18:22:27 浏览: 103
python 的numpy
4星 · 用户满意度95%
好的,下面是使用numpy实现尼姆游戏的Python代码:
```python
import numpy as np
# 初始化石子数量
stones = np.array([3, 4, 5])
# 判断游戏是否结束
def is_game_over(stones):
return np.sum(stones) == 0
# 打印当前状态
def print_status(stones):
print("当前状态:", end=" ")
for i in range(len(stones)):
print(f"第{i+1}堆有{stones[i]}个石子", end=" ")
print()
# 电脑随机取石子
def computer_move(stones):
while True:
heap_idx = np.random.randint(0, len(stones))
if stones[heap_idx] > 0:
stone_num = np.random.randint(1, stones[heap_idx]+1)
stones[heap_idx] -= stone_num
print(f"电脑取走了第{heap_idx+1}堆的{stone_num}个石子")
break
# 玩家输入取石子的堆和数量
def player_move(stones):
while True:
heap_idx = int(input("请输入要取走石子的堆的编号:")) - 1
stone_num = int(input("请输入要取走的石子的数量:"))
if heap_idx < 0 or heap_idx >= len(stones) or stone_num <= 0 or stone_num > stones[heap_idx]:
print("输入不合法,请重新输入!")
else:
stones[heap_idx] -= stone_num
print(f"你取走了第{heap_idx+1}堆的{stone_num}个石子")
break
# 主函数
def main():
print("欢迎来到尼姆游戏!")
print("游戏规则:")
print("有若干堆石子,每堆石子的数量不同。每次可以从任意一堆石子中取走任意数量的石子,但是不能不取或者取完。最后取走最后一颗石子的人获胜。")
print("祝你好运!")
# 游戏循环
while not is_game_over(stones):
print_status(stones)
player_move(stones)
if is_game_over(stones):
print("恭喜你,你赢了!")
break
computer_move(stones)
if is_game_over(stones):
print("很遗憾,你输了!")
break
if __name__ == '__main__':
main()
```
这个代码使用numpy数组来存储石子的数量,利用numpy库提供的函数来实现随机取石子等操作。在主函数中,我们通过循环来交替进行玩家和电脑的操作,直到游戏结束。
阅读全文