G
G
g_s_e2016-08-14 16:54:15
ruby
g_s_e, 2016-08-14 16:54:15

Building a class architecture in a Ruby program?

Good day! I have the following situation. For a couple of years I was engaged in web development on various CMS + Js, recently a project on RoR got under revision, I had to figure it out, at the same time I decided to delve into the Ruby language itself and read a couple of books, but theory without practice is bad. At first I decided to write a couple of console programs, but it seemed boring, after which I decided to make a mini-game - a sapper, and then there was a problem with organizing the architecture and organizing interaction between classes. Here is a rough description of the game process:
1. There is a field: 4x4, 5x5
2. Number of mines: 1/2/3
3. Displaying the field on the screen
4. If all empty fields are open, go to 7.
4. Player turn: (X; Y)
5. If the cell is empty, go to step 3.
6. If there is a mine in the cell, go to 7.
7. Display the result of the game - win/lose.
I understand that the implementation should have at least 2 classes. The first should be responsible for displaying the menu and handling invalid data entry exceptions. The second one is for the logic of the game itself, bypassing the field array, etc.
Question:
How to properly organize the entry point to the program, how to link method calls from different classes, and what else needs to be taken into account. Maybe someone has come across something similar, or can advise an article on this topic, I will be grateful for any help. Thank you all in advance.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Сергей Протько, 2016-08-14
@Fesor

перестаньте мыслить классами и все станет куда проще. На основе вашего списка выделите объекты, которые будут фигурировать в игре. Это будет:
- Клетка поля. У нее есть прямая связь с каждой из соседей и она знает есть на ней мина или нет. Так же для упрощения мы можем запихнуть в нее состояние мины (взорволась, обезврежена, необнаружена).
- Управляющая логика тоже должна где-то находиться. Назовем эту логику - контроллер. При указании координат клетки на поле, которую мы хотим нажать, мы должны отправлять этой клетке сообщение. Эта клетка уже в случае чего попросит соседние и так пойдет цепная реакция. В итоге все обязанности будут просто отслеживаться.
- Логика отображения. То есть что-то что берет текущее состояние игрового поля и будет заниматься его отображением на экран.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question