zoukankan      html  css  js  c++  java
  • python写的battle ship小游戏

    最近学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 "
    Turn", 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)
  • 相关阅读:
    谷歌 chrome 和 safari 浏览器 td innerHTML Textbox 部分显示不全
    SQLServer 日期转换字符串格式
    GNU 通用公共授權 第三版
    程序员的十个层次 你属于哪一层?
    一个因为缺少括号()引发的SQL存储过程不能执行的问题。
    关于实现字符串表达式求值
    Windows api数据类型【转载】
    x86—EFLAGS寄存器详解【转载】
    python PIL图像处理
    python学习笔记
  • 原文地址:https://www.cnblogs.com/sdet/p/4078677.html
Copyright © 2011-2022 走看看