ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Battleship——疫情下的自我调节

2020-01-30 20:55:28  阅读:313  来源: 互联网

标签:疫情 Battleship 自我调节 say board print he col row


最近疫情呆在家中不敢走动,看看有什么游戏,发现了这个battleship

玩了几把ing有意思,找来代码,发现还挺自嗨

做了较大的变化在:

加入语音功能

加入虚拟盲猜对手

大家一起无聊无聊

"""
codecademy上给的代码简单很多
"""
from random import randint
import time
import pyttsx3

engine = pyttsx3.init()
rate = engine.getProperty('rate')
engine.setProperty('rate', rate + 60)  # 调准语速


def say(self):
    print('****', self)
    engine.say(self)
    engine.runAndWait()


# 第一步: 写一个打印board的function
board = []

for i in range(5):
    board.append(["[O]"] * 5 + [str(i)])

board.append([" 0 ", " 1 ", " 2 ", " 3 ", " 4 "])


def print_board(board):
    for row in board:
        print(" ".join(row))


# 第二步: 开始游戏


while 2 == 2:
    say("准备好了吗? 输入 y 或者 n")
    if input("准备好了吗? 输入 y 或者 n. ") == "y":
        print("\nLet's play Battleship!")
        break


def random_number():
    return randint(0, 4)


ship_row = random_number()
ship_col = random_number()
# print('敌人偷偷把舰艇放在了', ship_row, ship_col)
turn = 0
say("部署你的战舰行坐标")

my_row = int(input("部署你的战舰行坐标: "))
say("部署你的战舰列坐标")
my_col = int(input("部署你的战舰列坐标: "))
say("你把自己的舰艇放在了坐标[{},{}]".format(my_row, my_col))
say('战争爆发,进入一级战备状态!')
for i in range(4):
    print("当前回合数: %s/4" % (i + 1))
    say("当前回合数:{}".format(i+1))
    print_board(board)
    he_guessrow = random_number()
    he_guesscol = random_number()
    # print('敌人猜测你的军舰在', he_guessrow, he_guesscol)
    say('敌人猜测你的军舰在[{},{}]'.format(he_guessrow, he_guesscol))
    if he_guessrow == my_row and he_guesscol == my_col:
        # print("我方舰艇被击中!")
        say("我方舰艇被击中!")
        break
    elif (he_guessrow < 0 or he_guessrow > 4) or (he_guesscol < 0 or he_guesscol > 4):
        # print("Oops,炮弹落在海域外面了.")
        say("Oops,炮弹落在海域外面了.")
    elif board[he_guessrow][he_guesscol] == "[M]":
        say("他们太蠢了,炮弹打到同一个敌方去了")
    else:
        say("耶,没有被敌舰发现!")
        board[he_guessrow][he_guesscol] = "[M]"
    print_board(board)
    # time.sleep(2)
    say('轮到我们出击了')
    say('设定导弹行坐标')
    guess_row = int(input("设定导弹行坐标: "))
    say('设定导弹列坐标')
    guess_col = int(input("设定导弹列坐标: "))
    if guess_row == ship_row and guess_col == ship_col:
        say("【击中敌方舰艇!】")
        break
    elif (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
        say("【Oops,炮弹落在海域外面了.】")
    elif board[guess_row][guess_col] == "[X]":
        say("【这个地方已经被探测过了】")
    else:
        say("【落空了,我们没有发现敌舰】")
        board[guess_row][guess_col] = "[X]"
    if turn == 3:
        say("回合数到,游戏结束")
        board[ship_row][ship_col] = "[*]"
        say("敌人的舰艇在[*]这里!")
        board[my_row][my_col] = "[@]"
        say("我们的舰艇在[@]这里!")
        print_board(board)
    turn += 1

 

标签:疫情,Battleship,自我调节,say,board,print,he,col,row
来源: https://www.cnblogs.com/xingnie/p/12243830.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有