Python 小练习_battleship
真心不容易啊................第一个自己完成的游戏,相比笨办法学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!值得使用的100个Python小技巧
目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...
- 快收藏!整理了 100 个 Python 小技巧
作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...
- 5个有趣的Python小知识,返回结果让人出乎意料~
1 字符串驻留 In [1]: a = 'something'...: b = 'some'+'thing'...: id(a)==id(b) Out[1]: True 如果上面例子返回True,但是 ...
- Python小知识点(3)--装饰器
Python小知识点(3)--装饰器 (1)装饰器含参数,被装饰函数不含(含)参数 实例代码如下: import time # 装饰器函数 def wrapper(func):def done(*ar ...
- python小爬虫之天气查询
python小爬虫之天气查询 刚开始研究爬虫,这个小程序通过抓取网页源代码,使用json解析实现了天气的查询. 1.需求分析 该博客实现了简单的天气查询功能,输入城市名称后可以查询出该城市的天气情况. ...
- 开课吧python小课值得么-好消息!今天,审计、会计、税务、财务主管彻底沸腾了……...
原标题:好消息!今天,审计.会计.税务.财务主管彻底沸腾了-- "我们预计到2025年,基础财务都会被机器人替代."有意识地关注行业趋势的财会人应该多多少少听过这句话. 这是「德勤 ...
- python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统
原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...
- python小项目案例-Python小项目:快速开发出一个简单的学生管理系统
本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...
- 开课吧python小课值得么-领导想提拔你,从来看的不是努力!
原标题:领导想提拔你,从来看的不是努力! 2020年对于很多职场人来讲,都是异常艰难的一年. 我的大学同学小迪,在北京一家互联网公司做运营,任劳任怨工作了3年,本想着今年可以涨一波薪,结果却在前几天接 ...
- 开课吧python小课值得么-材料学硕博士建议掌握的高效论文工具
一位土博哥们最近频繁深夜找我语音,每次聊的内容都是老三样:重读文献.改hypothesis.重做实验. 几经波折的文章以为终要见刊,结果又要大手术,土博心力交瘁,甚至有点想放弃. 每一次"论 ...
最新文章
- 生物信息行业应该具备哪些基础素养?重点应该放在计算机方面还是生物方面或者说其他?
- C语言函数strstr 分析及实现
- win10电脑安装android,5步教你如何在Win10 PC上安装Android 10
- XML —— DTD介绍
- Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator
- binlog关闭事务记录_【MySQL】binlog_format以及binlog事务记录分析
- PHP语言基础简单整理
- Python实现线程安全队列
- 彩虹云商城 最新彩虹代刷V6.9.0免授权纯净完整版
- js 动态生成表格案例
- 点击复制按钮进行复制文本
- 抽签抽奖小程序小工具(jquery+html)只需浏览器运行xlsx.core.min.js
- leetcode LCP 03. 机器人大冒险
- python的下载安装以及两种打开方式
- 微信小程序数据添加到云数据库中
- 从此,清华不再「唯论文数」!校长邱勇:大学不能把学术权力,交给期刊编辑和审稿人...
- 背出来matlab就无敌了
- 为什么容器内存占用居高不下,频频 OOM(续)
- 内置CRC于文本文件中的方法
- hash、MD5、SHA-1、CRC简介
热门文章
- error C4716 必须返回一个值 处理
- 规划控制下的二阶段设计理论 -【多核服务价值链协同】
- 英特尔携手生态伙伴亮相InfoComm,赋能协作办公迈向智能时代
- 简谈浅层拷贝和深层拷贝
- html中选择器是什么意思,css选择器是什么意思?
- 关于修复msvcp110.dll丢失的问题
- 勾股定理,西方称为毕达哥拉斯定理
- 处理 JS中 undefined 的7个技巧
- 百度apollo自动驾驶modules\planning\tasks\optimizers\path_time_heuristic\PathTimeHeuristicOptimizer类代码详解
- 如何测量智能产品的AI智商水平,论AI的三种智商