Python 小练习_battleship

这是一个Python初学者完成的打飞机游戏实践,通过Codecademy学习并补充基础。游戏虽小,但涉及随机坐标生成、地图显示和用户交互等关键点,有助于巩固编程基础。玩家需在限定次数内猜出隐藏的战舰位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

真心不容易啊................第一个自己完成的游戏,相比笨办法学python里面的直接照着例子写游戏来理解,这个游戏的接近20的steps,太补充基础知识了

虽然是小游戏,但是过程中还是大量查询了stackoverflow上和百度上面别人的代码,随后补基础

我们主要来看注释吧


from random import randint           #从random模块中引入randint功能

board = []                                       #创建一个空list,作为地图基础

for x in range(5):                            #通过for循环,创建一个5×5的范围地图,这一步非常重要,for循环来控制循环数量,激活append的功能!
    board.append(["O"] * 5)

def print_board(board):                  #这里的row,其实就是5×5里面里面的每个item,就是['O','O','O','O','O']
    for row in board:                        #在整个地图list内,有5个这样的item
        print " ".join(row)                    #在每个item内,每2个元素间添加空格

print "Let's play Battleship!"           #运行程序后开始的第一句话
print_board(board)                        #显示地图

def random_row(board):                 #这一步是定义随机产生战舰的位置行坐标
    return randint(0, len(board) - 1)  #位置的坐标是从0到4.         len(board)-1就代表了最长的坐标值

def random_col(board):                  #同上,定义随机产生战舰的位置列坐标
    return randint(0, len(board[0]) - 1)

ship_row = random_row(board)     #定义完以后,就赋值给变量
ship_col = random_col(board)
print ship_row                                #这个可以显示船的坐标,注意,正常游戏的时候是不需要这样的语句出现的,纯粹是调试时候用,因为你不知道每次运行程序
print ship_col                                 #船的坐标会出现在哪里

# Everything from here on should go in your for loop!
# Be sure to indent four spaces!
for turn in range(4):                        #这句是计算一个猜了几次,最多只能猜4次
    guess_row = int(raw_input("Guess Row:"))     #以下2句是要求玩家输入位置坐标,这个功能不仅是提供了输入功能,同时,非常重要的是,他控制了for turn这个历遍
    guess_col = int(raw_input("Guess Col:"))      #不是一次性历遍4次,而是一次历遍完了以后,再输入,再进行次数累加,避免了一口气历遍完range(4)的情况!
    if guess_row == ship_row and guess_col == ship_col:   #判断猜测坐标和实际船坐标是否一致
        print "Congratulations! You sunk my battleship!"
        break                                                                            #一个简单的break,但是功能是在玩家猜对后直接跳出循环,而不用在猜对的情况下还继续玩满4次
    else:
        if guess_row not in range(5) or guess_col not in range(5):  #避免猜测范围超出地图限制 ,这里的 not in写法,记一下,基础知识需要补齐
            print "Oops, that's not even in the ocean."
        elif(board[guess_row][guess_col] == "X"):       #这一句非常重要,当猜的答案已经猜测过的时候,打印下面提示语句
            print "You guessed that one already."
        else:
            print "You missed my battleship!"      
            board[guess_row][guess_col] = "X"     #这句非常重要,将你猜测的坐标值,赋给"X",只能写.....="X",而不能写"X"=.....  因为这是将X 赋值给坐标
    print "Turn", turn + 1 #Print (turn + 1) here!   #打印当前测试的次数
    print_board(board)                                        #再次显示地图(包含X的地图)
    if turn == 3:                                                   #如果turn等于3(也就是猜测次数是4的时候),游戏结束
        print "Game Over"



最后的最后,程序里面判断猜测坐标是否在地图内,还把负数给涵盖了,比我自己写的更加严谨。

        if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值