• 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)
  • 相关阅读:
    javascript package的一种简单"优雅"实现
    高效、快速、专业的外科手术团队
    贝塞尔曲线
    经典格斗游戏《街头霸王》的Javascript实现
    该死的痘痘
    同步/异步与阻塞/非阻塞的区别
    Shell echo用法
    凹凸Linux面试题
    VMware Workstation 9下安装Fedora 18教程(转)
    Linux中locale 详解(转)
  • 原文地址:https://www.cnblogs.com/sdet/p/4078677.html
Copyright © 2020-2023  润新知