最近学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的更多相关文章

  1. 每个人都可以用C语言写的推箱子小游戏!今天你就可以写出属于自己项目~

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  2. canvas写个简单的小游戏

    之前在HTML5 Canvas属性和方法汇总一文中,介绍过Canvas的各种属性以及方法的说明,并列举了自己写的一些Canvas demo,接下来开始写一个简单的小游戏吧,有多简单,这么说吧,代码不到 ...

  3. [py]python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...

  4. 从Python小白到第一个小游戏发布

    1.安装必要的环境(附图两张) 直接下载安装程序,本人win10系统,根据电脑系统下载并安装对应的python.exe,安装路径可以选择D盘的,具体安装细节这里就不说了,不知道的可以留言或者找度娘 2 ...

  5. 利用 Python 写一个颜值测试小工具

    我们知道现在有一些利用照片来测试颜值的网站或软件,其实使用 Python 就可以实现这一功能,本文我们使用 Python 来写一个颜值测试小工具. 很多人学习python,不知道从何学起.很多人学习p ...

  6. 初识python:tkinter 实现 弹球小游戏(面向对象)

    使用蹩脚式面相对象,实现弹球小游戏(非面向对象实现,主要介绍tk基础用法). #!/user/bin env python # author:Simple-Sir # time:2020/8/7 10 ...

  7. 初识python:tkinter 实现 弹球小游戏(非面相对象)

    通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...

  8. 用canvas写个接水管小游戏

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 过年的十八天假期迷迷糊糊一下子就过去了(LZ还是实习生,鉴于大学最后一个寒假了,所以就多请了好多天假),又要返工上班了.这是年后的第一篇博 ...

  9. 软件工程:黄金G点小游戏1.0

    我们要做的是黄金G点小游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...

随机推荐

  1. 【python】unittest中常用的assert语句

    下面是unittest模块的常用方法: assertEqual(a, b)     a == b assertNotEqual(a, b)     a != b assertTrue(x)     b ...

  2. 【shell】nmap工具的使用

    NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工 具包,其基本功能有三个,一是探测一组主机是否在线:其次是扫描主机端口,嗅探所提供的网络服务:还可以推断主机所用的操作系统 ...

  3. ASIHttpRequest addRequestHeader的处理

    我现在用到了ASIHttpRequest来读取数据,这时候我发现里面的头在很多时候都是一样的.如用户的令牌,设备类型,ios版本,软件版本等 [self.request addRequestHeade ...

  4. ASP.NET动态加载Js代码到Head标签中(三种方法)

    方法一代码如下: HtmlGenericControl Include2 = new HtmlGenericControl("script"); Include2.Attribut ...

  5. C基础--结构体成员初始化方式

    之前在linux内核代码中看到结构体成员成员初始化使用类似于.owner = THIS_MODULE, 不太见过,于是搜了个博客,分享下: 转自:http://www.cnblogs.com/Anke ...

  6. 【转】CSS浏览器兼容性与解析问题终极归纳

    1.怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式.为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯. 2.IE6双边距问题:在 ...

  7. Linux下diff打补丁方法

    tar zxvf php-5.2.14.tar.gz gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1

  8. CharsetUtils.java

    /* * Copyright (c) 2013. * * Licensed under the Apache License, Version 2.0 (the "License" ...

  9. PLSQL_基础系列02_分组函数GROUP BY / ROLLUP / CUBE(案例)

    2014-11-30 Created By BaoXinjian

  10. OAF_VO系列3 - Binding Style绑定方式

    在OAF VO开发中,Binding Style主要用于对VO的where clause做动态传值,总共有三种方式 1.       Oracle Named 2.       Oracle Posi ...