python写的battle ship小游戏 - 1.0
最近学python,这是今天写的一个小游戏。
from random import randint class Board(object):
board = []
def __init__(self,row,col):
self.board = []
self.row = row
self.col = col
for i in range(row):
self.board.append( ["O"] * col ) def print_board(self):
space = (self.col * 2 - 8)/2
print "-" * space + " Board " + "-" * space
print "-" * self.col * 2
for r in self.board:
print " ".join(r)
print "-" * self.col * 2 class Game(object):
loop_time = 4
def __init__(self,row,col):
self.row = row
self.col =col
self.actual_row = -1
self.actual_col = -1
self.guess_row = -100
self.guess_col = -100
self.main_loop() def random_row(self):
return randint(1, self.row) def random_col(self):
return randint(1, self.col) def set_ship(self):
"""the battle ship is here:"""
self.actual_col = self.random_col()
self.actual_row = self.random_row()
print self.actual_row
print self.actual_col
self.my_board_actual.board[self.actual_row - 1][self.actual_col - 1] = "S" def get_input_from_player(self):
print "Please select where to hit on the board:"
self.guess_row = int(raw_input("To hit Row:")) - 1
self.guess_col = int(raw_input("To hit Col:")) - 1 def check_if_hit(self):
if self.my_board_actual.board[self.guess_row][self.guess_col] == "S":
print "Congratulations! You sunk my battle ship!"
self.my_board.board[self.guess_row][self.guess_col] = "S"
return True
else:
if self.guess_row < 0 or self.guess_col < 0 or self.guess_row > self.row or self.guess_col > self.col:
print "Ooops, that's not even in the ocean."
elif self.my_board.board[self.guess_row][self.guess_col] == "X":
print "You guessed that one already."
else:
print "You missed my battleship!"
self.my_board.board[self.guess_row][self.guess_col] = "X"
return False def main_loop(self): print "Game Start: Let's play Battleship!"
turn = 1
#print "Turn", turn
my_board = Board(self.row,self.col)
my_board_actual = Board(self.row,self.col)
self.my_board = my_board
self.my_board_actual = my_board_actual
my_board.print_board() self.set_ship() result = False while turn < self.loop_time + 1:
print "\nTurn", turn
self.get_input_from_player()
result = self.check_if_hit()
my_board.print_board()
if result:
turn = self.loop_time + 2
else:
turn += 1
else:
if not result:
print "Game Over" my_game = Game(5,5)
python写的battle ship小游戏 - 1.0的更多相关文章
- 每个人都可以用C语言写的推箱子小游戏!今天你就可以写出属于自己项目~
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- canvas写个简单的小游戏
之前在HTML5 Canvas属性和方法汇总一文中,介绍过Canvas的各种属性以及方法的说明,并列举了自己写的一些Canvas demo,接下来开始写一个简单的小游戏吧,有多简单,这么说吧,代码不到 ...
- [py]python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...
- 从Python小白到第一个小游戏发布
1.安装必要的环境(附图两张) 直接下载安装程序,本人win10系统,根据电脑系统下载并安装对应的python.exe,安装路径可以选择D盘的,具体安装细节这里就不说了,不知道的可以留言或者找度娘 2 ...
- 利用 Python 写一个颜值测试小工具
我们知道现在有一些利用照片来测试颜值的网站或软件,其实使用 Python 就可以实现这一功能,本文我们使用 Python 来写一个颜值测试小工具. 很多人学习python,不知道从何学起.很多人学习p ...
- 初识python:tkinter 实现 弹球小游戏(面向对象)
使用蹩脚式面相对象,实现弹球小游戏(非面向对象实现,主要介绍tk基础用法). #!/user/bin env python # author:Simple-Sir # time:2020/8/7 10 ...
- 初识python:tkinter 实现 弹球小游戏(非面相对象)
通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...
- 用canvas写个接水管小游戏
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 过年的十八天假期迷迷糊糊一下子就过去了(LZ还是实习生,鉴于大学最后一个寒假了,所以就多请了好多天假),又要返工上班了.这是年后的第一篇博 ...
- 软件工程:黄金G点小游戏1.0
我们要做的是黄金G点小游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...
随机推荐
- Neutron LBaaS Service(2)—— Neutron Services Insertion Model
Service Insertion Service Insertion是Neutron中实现L4/L7层服务的框架.Neutron以前只有一级插件结构用于实现各种L2层技术(如LinuxBridge, ...
- (转)WEB第三方打印控件[ASP.NET常用工具]
本文转载自:http://blog.csdn.net/chz_cslg/article/details/25415347 在B/S模式开发中,打印是个很大的困扰.无论是采用页面直接输出或者引用WORD ...
- Redis性能测试工具benchmark简介
Redis自己提供了一个性能测试工具redis-benchmark.redis-benchmark可以模拟N个机器,同时发送M个请求. 用法:redis-benchmark [-h -h <ho ...
- Saltstack系列3:Saltstack常用模块及API
说明 salt '*' sys.list_modules #列出当前版本支持的模块 API原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现 ...
- net farmework 4安装不了 原因是 HRESULT 0xc8000222
1. Click Start, Run, type: cmd and press Enter. Please run the following command in the opened windo ...
- Mysql触发器简明使用
触发器:trigger创建触发器的语法mysql> delimiter $mysql> create trigger 触发器名称 after/before(触发时间) insert/upd ...
- Navicat(连接)-1
连接 要在 Navicat 开始使用你的服务器,你要首先用连接窗口创建一个或多个连接.如果你是一个服务器新手和不肯定如何工作,你可能想看看: MySQL 用户手册 Oracle 数据库文件 Postg ...
- 使用 Entity Framework
ORM 和 EF 当我们要开发一个应用程序,就要考虑怎样展示数据,怎样持久化数据.考虑这个问题时我们所要关心的东西,最重要的莫过于程序的性能.开发的简易性和代码的可维护.可扩展性. 持久化(Persi ...
- [Java Web – 3A] – Spring MVC开发注意事项
1.使用Maven构建项目 2.SpringMVC 绝对路径的问题 首先要明确一点,在html中,资源文件也是有自己的URL,即href中是支持绝对路径.如下代码: <link href=&qu ...
- C#托管代码与C++非托管代码互相调用
http://www.cnblogs.com/Jianchidaodi/archive/2009/03/11/1407270.html#1473515 http://www.cnblogs.com/J ...