Git Product home page Git Product logo

lab-4's Introduction

lab-4's People

Contributors

bagautdino avatar

Watchers

 avatar

lab-4's Issues

Замечания, защита

  • Класс Main совсем бесполезный, с одним статическим методом. В какой момент вам понадобиться делать много разных экземпляров? Я думаю, что либо достаточно было сделать функцию main() и в ней показать работу остальных классов. Либо переделать класс Main в класс Game. И добавить туда какие-нибудь соответствующие атрибуты. Например, атрибуты экземпляра класса Game такие как: self.mode, self.max_points что-то еще. Добавить в класс Game методы run_dialog(), start_game(), check_winner(), add_player().

Класс обычно представляет какую-то конкретную сущность, вещь из предметной области. Класс нужен для того, чтобы упорядочить описание объекта (его поведение, описываемое методами и свойства, выражающиеся атрибутами). Класс Main этого не делает у вас. Я бы сделала класс Game следующим образом:

class Game:

    def __init__(self, mode='0', players=[]):
        self.mode = mode
        self.players = players
        self.cube = Cube() #  fill_suits() fill_values() можно вызывать в init Cube

    def chose_mode(self):
        print('\n\t1) Игрок Vs. Компьютера'
              '\n\t2) Мультиплеер'
              '\n\t0) Выход')
        print('\n\nВыберите режим: ')
        self.mode = input()

    def start_game(self):
        if self.mode == '0':
            self.stop_game()
            return
        elif self.mode == '1':
            self.single_game()
        elif self.mode == '2':
            number = int(input('К-во игроков: '))
            self.multiplayer_game(number)
        self.check_winner()
        self.clear_game()
        self.chose_mode()

    def single_game(self):
        print("\n\n[  Игрок    V S.   Компьютер  ]")
        self.add_payer(Player())
        self.add_payer(Cpu())
        self.run_game()

    def multiplayer_game(self, number=2):
        print("\n\n[  Мультиплеер  ]")
        for i in range(number):
            self.add_payer(Player())
        self.run_game()

    def run_game(self):
        while self.cube.endgame_points < 8:
            for player in self.players:
                time.sleep(2)
                self.cube.show_cubes()
                print(f'\n\n{player.name} теперь твоя очередь...') # В класе CPU self.name = "Компьютер"
                player.choose_cube()
                self.cube.update_endgame_points()

    def clear_game(self):
        self.cube = Cube()
        self.players.clear()

    def stop_game(self):
        print('Хорошего дня! До свидания.')

    def check_winner(self):
        winner = max(self.players, key=lambda p: p.score)
        print(f'\nПобедитель {winner.name}')
        print('Окончательный счет: ')
        for player in self.players:
            print(f'{player.name}: {player.score}')

    def add_payer(self, player):
        self.players.append(player)


if __name__ == '__main__':
    g = Game()
    g.chose_mode()
    g.start_game()
  • Для защиты работы посмотрите на предложенный мной класс Game и задайте мне три вопроса по моментам, которые могут быть непонятны (можно больше).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.