真心不容易啊................第一个自己完成的游戏,相比笨办法学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):



Python 小练习_battleship相关推荐

  1. 收藏喜+1!值得使用的100个Python小技巧

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  2. 快收藏!整理了 100 个 Python 小技巧

    作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...

  3. 5个有趣的Python小知识,返回结果让人出乎意料~

    1 字符串驻留 In [1]: a = 'something'...: b = 'some'+'thing'...: id(a)==id(b) Out[1]: True 如果上面例子返回True,但是 ...

  4. Python小知识点(3)--装饰器

    Python小知识点(3)--装饰器 (1)装饰器含参数,被装饰函数不含(含)参数 实例代码如下: import time # 装饰器函数 def wrapper(func):def done(*ar ...

  5. python小爬虫之天气查询

    python小爬虫之天气查询 刚开始研究爬虫,这个小程序通过抓取网页源代码,使用json解析实现了天气的查询. 1.需求分析 该博客实现了简单的天气查询功能,输入城市名称后可以查询出该城市的天气情况. ...

  6. 开课吧python小课值得么-好消息!今天,审计、会计、税务、财务主管彻底沸腾了……...

    原标题:好消息!今天,审计.会计.税务.财务主管彻底沸腾了-- "我们预计到2025年,基础财务都会被机器人替代."有意识地关注行业趋势的财会人应该多多少少听过这句话. 这是「德勤 ...

  7. python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统

    原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...

  8. python小项目案例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  9. 开课吧python小课值得么-领导想提拔你,从来看的不是努力!

    原标题:领导想提拔你,从来看的不是努力! 2020年对于很多职场人来讲,都是异常艰难的一年. 我的大学同学小迪,在北京一家互联网公司做运营,任劳任怨工作了3年,本想着今年可以涨一波薪,结果却在前几天接 ...

  10. 开课吧python小课值得么-材料学硕博士建议掌握的高效论文工具

    一位土博哥们最近频繁深夜找我语音,每次聊的内容都是老三样:重读文献.改hypothesis.重做实验. 几经波折的文章以为终要见刊,结果又要大手术,土博心力交瘁,甚至有点想放弃. 每一次"论 ...

最新文章

  1. 生物信息行业应该具备哪些基础素养?重点应该放在计算机方面还是生物方面或者说其他?
  2. C语言函数strstr 分析及实现
  3. win10电脑安装android,5步教你如何在Win10 PC上安装Android 10
  4. XML —— DTD介绍
  5. Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator
  6. binlog关闭事务记录_【MySQL】binlog_format以及binlog事务记录分析
  7. PHP语言基础简单整理
  8. Python实现线程安全队列
  9. 彩虹云商城 最新彩虹代刷V6.9.0免授权纯净完整版
  10. js 动态生成表格案例
  11. 点击复制按钮进行复制文本
  12. 抽签抽奖小程序小工具(jquery+html)只需浏览器运行xlsx.core.min.js
  13. leetcode LCP 03. 机器人大冒险
  14. python的下载安装以及两种打开方式
  15. 微信小程序数据添加到云数据库中
  16. 从此,清华不再「唯论文数」!校长邱勇:大学不能把学术权力,交给期刊编辑和审稿人...
  17. 背出来matlab就无敌了
  18. 为什么容器内存占用居高不下,频频 OOM(续)
  19. 内置CRC于文本文件中的方法
  20. hash、MD5、SHA-1、CRC简介

热门文章

  1. error C4716 必须返回一个值 处理
  2. 规划控制下的二阶段设计理论 -【多核服务价值链协同】
  3. 英特尔携手生态伙伴亮相InfoComm,赋能协作办公迈向智能时代
  4. 简谈浅层拷贝和深层拷贝
  5. html中选择器是什么意思,css选择器是什么意思?
  6. 关于修复msvcp110.dll丢失的问题
  7. 勾股定理,西方称为毕达哥拉斯定理
  8. 处理 JS中 undefined 的7个技巧
  9. 百度apollo自动驾驶modules\planning\tasks\optimizers\path_time_heuristic\PathTimeHeuristicOptimizer类代码详解
  10. 如何测量智能产品的AI智商水平,论AI的三种智商