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)
时间: 2024-10-11 01:35:23

python写的battle ship小游戏 - 1.0的相关文章

用控制台写类窗体2048小游戏

原文地址:用控制台写类窗体2048小游戏作者:余文 2048是一个很简单的小游戏,这是我自己实现的一个版本. 这个版本有两个特色 这是一个高仿窗体程序的控制台程序. 通过使用指针将四个方向的移动简化成了一个方向的移动. 当初刚出来2048小游戏的时候,玩的不亦乐乎.之后根据游戏规则自己花了一下午时间用控制台写了一个玩,没有参考源码. 当时只实现了游戏的移动逻辑和胜负判定逻辑,界面很简单,但已经可以玩玩了. 这是当初刚写完发空间说说得瑟的时候. 今年5月有段时候比较闲,对程序做了较大更新. 实时显

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

python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输出 2.把日期换算成年龄 3.更新操作做的更优雅 准备工作 db准备 - 创建数据库 mysql> create database txl charset utf8; Query OK, 1 row affecte

Python编写微信打飞机小游戏(一)

最近开始学习Python语言,发现Python有一个神奇的Pygame模块,在编写小游戏时显得非常方便,于是参照教学视频编写了一个微信打飞机的小游戏,网上有很多相关的博客,但都不是很详细,大都是直接贴代码,于是决定沉下心来把编写程序的过程记录下来,与大家分享. 首先声明一点,这篇博客完全参照了小甲鱼的<零基础入门学习Python>教学视频,为了尊重原创,特将原作者的视频地址公布如下:<零基础入门学习Python> Python编译器和Pygame模块的安装网上的教程很多,这里不再赘

用C写的控制台的小游戏:running__worm

在小小的控制台内也可以做一些自娱自乐的小游戏,虽然其效果远不如利用游戏引擎如cocos2d.unity等做出的游戏效果, 但是实际玩起来还是挺有意思的. 还可以在丑陋的控制台上设计玩家界面. 下面为游戏介绍: printf("\n\t\t游戏规则\n"); printf(" 在Run and turn的游戏中你将会是一只被诅咒的小虫子\n"); printf(" 邪恶的诅咒使你必须不断前进(速度是不稳定的!)\n 通过不断吸收爱心来维持生命\n"

Python编写微信打飞机小游戏(十一)

在这篇博文中,我们准备为打飞机小游戏添加一个暂停的功能,即用户在游戏过程中随时可以通过单击屏幕右上方的一个暂停按钮来暂停和恢复游戏.这个功能看似比较简单,但其中涉及了鼠标操作.图片切换.代码结构的重置等等,接下来我们一一进行介绍. 1.加载暂停按钮图标 在image文件夹下一共有四张暂停按钮的图片,分别为深色和浅色两组,首先在main()函数中加载相关图片资源并初始化暂停/开始标志位: paused = False # 标志是否暂停游戏 pause_nor_image = pygame.imag

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

我们要做的是黄金G点小游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项目,必须由二人共同完成,并分别将本次作业

Python编写微信打飞机小游戏(四)

之前的工作已经基本上将我方飞机的图形显示工作做的差不多了,这篇博客中我们将开始添加敌方飞机——小型敌机.中型敌机(直升机)和大型敌机(坦克).新建一个enemy.py文件,导入pygame和random模块,开始编写吧(还是要注意文件编码问题,以后就不再啰嗦了). 敌方飞机类与我方飞机模块有一定的相似性,但不会左右移动,不会发射子弹等等.小型敌机是敌方飞机中最基本的类型,一击毙命,没有血量.没有出场音效.中型敌机有一定血量,损毁时附带特殊音效.大型敌机血量最多,出场和损毁时都有特殊音效,游戏中中

python写简单的猜数字游戏

最近在学python,学到控制流程要写一个猜数字游戏.不经想起小时候三色台的一个综艺节目,里面也有个猜数字游戏,于是就想写个简单的自己玩玩也好. 规则:[0-100]随机生成一个数字,然后在猜数字,每叫一次数字都是出现一个区间,不断的缩小区间直到猜对正确数字. 刚开始写就想着用赋值的方法解决吧,可变量越来越多,头晕啊!冷静下,仔细想来,其实我要的结果就是区间的不断减小,这就没必要拘束在变量里面了,于是就用了list.list的排序,可变都有助于功能的实现,果然功能就简单的实现了. import 

10分钟教你用Python做个打飞机小游戏超详细教程

更多精彩尽在微信公众号[程序猿声] 我知道你们一定想先看效果如何 00 目录 整体框架 开始之前-精灵类Sprite 子弹类class Bullet 玩家飞机类class Player 敌机类class Enemy 游戏主体循环以及帧率设置 让子弹飞 刷出敌机 打怪 把飞机敌机子弹都画出来 处理键盘事件 分数显示 和 GameOver 最终代码 01 前言 这次还是用python的pygame库来做的游戏.关于这个库的内容,读者可以上网了解一下.本文只讲解用到的知识.代码参考自网上,自己也做了一