Python Forum
Requesting homework help and maybe a little code review…
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Requesting homework help and maybe a little code review…
#1
Hi guys,

Homework Help
I want to put the numbers 0 - 3 around my game board to represent the row and column indexes like so:
0 1 2 3
0 * * * *
1 * * * *
2 * * * *
3 * * * *
But I’m drawing a blank. Can I get a hint as to how might be best to solve this problem please?

Code Review
I’m hoping I could get some feedback on my attempt at a game called pairs. A detailed brief for the task can be found here:pairs google doc

Anyways, thanks for taking the time to read my post

import random
import sys
import time

import pyautogui


def cls():
    pyautogui.hotkey('ctrl', 'l')


def create_answer_board(cards, row=4, col=4):
    return [cards[table_row * col:(table_row + 1) * col] for table_row in range(0, row)]


def create_concealed_board():
    return [['X' for col in range(4)] for row in range(4)]


def display_board(board):
    cards_in_row = ''
    for row in board:
        for card in row:
            cards_in_row += card + ' '
        print(cards_in_row)
        cards_in_row = ''
    print('')


def select_card(concealed_board):
    try:
        row, col = [int(x) for x in
                    input(
                        "Please enter the row and column number (separated by a space and in that order) for the card you want to flip over:").split()]
        if row > 3 or col > 3 or row < 0 or col < 0:
            print("Input is outside the given range.")
            return select_card(concealed_board)
        if is_hidden_card(concealed_board, row, col):
            return [row, col]
        else:
            print("That card has been revealed... Please try again.")
            return select_card(concealed_board)
    except ValueError:
        print("Please try again:")
        return select_card(concealed_board)


def reveal_selected_card(selected_card_location, concealed_board):
    concealed_board[selected_card_location[0]][selected_card_location[1]] = cards[selected_card_location[0]][
        selected_card_location[1]]
    display_board(concealed_board)


def check_for_match(selected_card_location_1, selected_card_location_2, cards):
    card_1 = cards[selected_card_location_1[0]][selected_card_location_1[1]]
    card_2 = cards[selected_card_location_2[0]][selected_card_location_2[1]]
    return card_1 == card_2


def is_hidden_card(concealed_board, row, col):
    return concealed_board[row][col] == '_'


def insert_X(selected_card_location_1, selected_card_location_2, concealed_board):
    concealed_board[selected_card_location_1[0]][selected_card_location_1[1]] = "X"
    concealed_board[selected_card_location_2[0]][selected_card_location_2[1]] = "X"
    return concealed_board


def is_complete(concealed_board):
    it = iter(concealed_board)
    for first in it:
        break
    else:
        return True  # empty case, note all([]) == True
    return all(x == first for x in it)


cards = ["J", "J", "J", "J", "Q", "Q", "Q", "Q", "K", "K", "K", "K", "A", "A", "A", "A"]
random.shuffle(cards)

cards = create_answer_board(cards)
concealed_board = create_concealed_board()

while True:
    display_board(cards) # just here for testing
    display_board(concealed_board)
    selected_card_location_1 = select_card(concealed_board)
    reveal_selected_card(selected_card_location_1, concealed_board)
    selected_card_location_2 = select_card(concealed_board)
    reveal_selected_card(selected_card_location_2, concealed_board)
    if check_for_match(selected_card_location_1, selected_card_location_2, cards):
        print("Congrats, they matched")
        print("Clearing the screen in 3 seconds")
        time.sleep(3)
        concealed_board = insert_X(selected_card_location_1, selected_card_location_2, concealed_board)
        cls()
    if is_complete(concealed_board):
        print("Congrats you found all 8 pairs and have won the game!!!")
        sys.exit()

hey,
I solved homework help by modifying the display_board function to this:

def display_board(board):
    cards_in_row = ''
    number = 0
    print("    0 1 2 3")
    for row in board:
        print(number, end='   ')
        number += 1
        for card in row:
            cards_in_row += card + ' '
        print(cards_in_row)
        cards_in_row = ''
    print('')
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Python Code Review and Challenge cpatte7372 2 1,946 Jan-14-2022, 10:45 AM
Last Post: cpatte7372
  Please review and help me on this code Sushmakusu 4 2,147 Aug-05-2021, 11:37 AM
Last Post: jamesaarr
  I am asking for a review of my homework to confirm I completed all steps mcgraw927 5 2,708 Jun-24-2020, 07:49 PM
Last Post: jefsummers
  Code Review: Range and Enumerate lummers 2 2,065 Jan-11-2020, 12:40 AM
Last Post: lummers
  I have homework that I've made no effort to show any code that I'm stuck on Ronaldinho 1 2,347 May-30-2019, 07:18 PM
Last Post: nilamo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020