Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update I1 and I2 to have interaction patterns #165

Open
wants to merge 10 commits into
base: gh-pages
Choose a base branch
from

Conversation

megstang
Copy link
Contributor

@megstang megstang commented Aug 2, 2022

Backend Curriculum PR Template

Description

In this PR, I've updated I1 and I2 of connect four to have an interaction pattern for students to follow.

Why are we making this update?

In the past, when we've given students this connect four project without any interaction pattern, they struggled in areas that we didn't need them to struggle on yet. For example, they would spend days trying to figure out how to get the board to render. With this change, I hope that students can focus on developing their TDD and basic ruby skills in the first two iterations, and THEN focus on their own problem solving in ITeration 3.

Type of update

  • Minor update/fix -- no review requested
  • Moderate update -- review from Mod Team requested
  • Major update -- review from Backend Team requested

How will we measure the success of this change?

Via check ins during projects, and weekly surveys. In past weekly surveys when we had the old version of this project, we had a lot of feedback around not even knowing where to start. My hope is that students will express less of a struggle around starting the project.

What questions do you have/what do you want feedback on? (optional)

I'm not quite ready to merge this, but I wanted to put this up so that we all could look at it, maybe try it out, and consider if it's written well enough for students to understand how to get started on the project.


When a user runs the command to start the game, they will see a welcome message, followed by an empty board. The board itself will represent empty spaces with periods and column names with a letter A-G.
A Cell object represents the space where a chip could be placed on the Connect 4 board. We will be able to read its column letter and row number, as well as its display value. It will also have behavior to fill in the cell with a new value.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A Cell object represents the space where a chip could be placed on the Connect 4 board. We will be able to read its column letter and row number, as well as its display value. It will also have behavior to fill in the cell with a new value.
A `Cell` object represents the space where a chip could be placed on the Connect 4 board. We will be able to read its column letter and row number, as well as its display value. It will also have behavior to fill in the cell with a new value.

.......
.......
.......
The Cell class should follow this interaction pattern:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The Cell class should follow this interaction pattern:
The `Cell` class should follow this interaction pattern:

# => "."
pry(main)> a1.filled?
# => false
pry(main)> a1.fill("X")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When calling Cell#fill are we expecting it to return the value or just perform the fill and we can get the value with a call to Cell#value? If it is the latter then the interaction pattern would need to be updated.

pry(main)> columns = {A: a_cells, B: b_cells, C: c_cells, D: d_cells, E: e_cells, F: f_cells, G: g_cells}
pry(main)> board = Board.new(columns)
pry(main)> board.place_chip("A", "X")
pry(main)> board.render_board
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this and the following board.render_board calls are meant to be board.render to match I1.

#<Cell:0x0000000130333278 @column="E", @filled=false, @placement="E4", @row=4, @value=".">,
#<Cell:0x0000000130332be8 @column="E", @filled=false, @placement="E5", @row=5, @value=".">,
#<Cell:0x0000000130332558 @column="E", @filled=false, @placement="E6", @row=6, @value=".">]
pry(main)> board.diagonal_for(c3)
Copy link
Contributor

@abdulredd abdulredd Aug 15, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question about Board#diagonal_for ... is it only expected that this method returns diagonals from top left to bottom right and not bottom left to top right?

@epintozzi
Copy link
Contributor

Since we're planning to use the old version without the interaction pattern as the "challenge" project in Mod 1 this inning, I'm wondering if it makes sense to create a "spin-off" project maybe whenever this is merged? Similar to how we created Viewing Party Lite and kept the original Viewing Party intact in Mod 3. Thoughts on the best way to handle this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants