collapse

Autor Tópico: Ajuda [PYTHON] Jogo connect 4  (Lida 121 vezes)

0 Membros e 1 Visitante estão vendo este tópico.

Offline SrbLm

  • L4MM3R
  • *
  • Mensagens: 35
  • Curtidas: 3
  • Curtidas dadas: 8
Ajuda [PYTHON] Jogo connect 4
« Online: 13 de Janeiro de 2021, 14:00 »
Ola time,
Tenho a seguinte tarefa:

Citar
 
Have you ever played "Connect 4"? It's a popular kid's game by the Hasbro company. In this project, your task is create a Connect 4 game in Python. Before you get started, please watch this video on the rules of Connect 4:

Links Bloqueados para Visitantes. Registre-se ou Login

Once you've got the rules down, your assignment should be fairly straightforward. You'll want to draw the board, and allow two players to take turns placing their pieces on the board (but as you learned above, they can only do so by choosing a column, not a row). The first player to get 4 across or diagonal should win!

Normally the pieces would be red and black, but you can use X and O instead.

Defini os seguintes passos para realizar-lo:

1. Desenhar o tabuleiro
2. Atualizar o tabuleiro com o input do usuario
3. Verificar se existem 4 peças do mesmo tipo na horizontal, vertical ou diagonal

Até agora tenho isso:

Código: Links Bloqueados para Visitantes. Registre-se ou Login
'''

012345678
 | | | |  0
--------- 1
 | | | |  2
--------- 3
 | | | |  4
--------- 5
 | | | |  6
--------- 7
 | | | |  8


'''

def drawField():
for row in range(9):
if row % 2 == 0:
for column in range(9):
if column % 2 == 0:
if column != 8:
print(' ', end='')
else:
print(' ')
else:
print('|', end='')
else:
print('---------')
drawField()

player = 1
currentField = [' ', ' ', ' ', ' ', ' ']

while(True):
print(f'Players {player} turn')
move = int(input('Column: '))
if player == 1:
currentField[move] == 'X'
player = 2
else:
currentField[move] == 'O'

O que nao consigo ainda é atualizar o tabuleiro com o input do usuario.

Primeiramente eu quero que a função drawField addicione 'X' ou 'O' para a ultima linha do tabuleiro, no caso linha 8. Depois adicionar a linha 7 caso ja tenha um peça na linha 8 e assim em diante.

Alguma ideia?

Grato desde já.

Offline SrbLm

  • L4MM3R
  • *
  • Mensagens: 35
  • Curtidas: 3
  • Curtidas dadas: 8
Re:[PYTHON] Jogo connect 4
« Resposta #1 Online: 14 de Janeiro de 2021, 12:34 »
Prezados,
Consegui adicionar o input do usuario como eu queria, empilhando eles de acordo com a columna que o usuario escolhe.
A solução até agora ficou assim:

Código: Links Bloqueados para Visitantes. Registre-se ou Login
def drawField(field):
    for row in range(9): #0,1,2,3,4...
                         #0,.,1,.,2...
        if row % 2 == 0: #0.2.4 ...
            practicalRow = int(row/2)
            for column in range(9): #0,1,2,3,4...
                                    #0,.,1,.,2...
                if column % 2 == 0:#0.2.4
                    practicalColumn = int(column/2) #0,1,2...
                    if column != 8:
                        print(field[practicalRow][practicalColumn], end='')
                    else:
                        print(field[practicalRow][practicalColumn])
                else:
                    print('|', end='')
        else:
            print('-'*9)

player = 1
currentField = [[' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ']]
rowCount = [4, 4, 4, 4, 4]
drawField(currentField)
while(True):
    print(f'Players {player} turn')
    moveColumn = int(input('Column: '))
    if player == 1:
        if currentField[rowCount[moveColumn]][moveColumn] == ' ':
            currentField[rowCount[moveColumn]][moveColumn] = 'X'
            rowCount[moveColumn] -= 1
            player = 2
    else:
        if currentField[rowCount[moveColumn]][moveColumn] == ' ':
            currentField[rowCount[moveColumn]][moveColumn] = 'O'
            rowCount[moveColumn] -= 1
            player = 1
    drawField(currentField)
Agora eu não faço ideia de como checar se existem quatro 'X' ou 'O' seguidos na horizontal, vertical ou diagonal.
Qualquer sugestão é muito bem vinda.

 

* CaveiraTech YouTube

* Facebook

Guilherme Junqueira
04 de Fevereiro de 2019, 18:01 por Guilherme Junqueira
Visual.: 31328 | Coment.: 20

Infelizmente a seção de Grupos de estudos do fórum estava sendo usada por organizações criminosas para recruta...
Guilherme Junqueira
27 de Julho de 2018, 17:30 por Guilherme Junqueira
Visual.: 31943 | Coment.: 60

Pessoal, estou pensando seriamente na possibilidade de criar um novo fórum, só que voltado 100% à programação....
Guilherme Junqueira
26 de Junho de 2018, 20:25 por Guilherme Junqueira
Visual.: 20126 | Coment.: 41

Resolvi fazer uma enquete para ver qual o posicionamento político da maioria aqui no fórum. O Alobus já fez um...
Guilherme Junqueira
20 de Junho de 2018, 12:56 por Guilherme Junqueira
Visual.: 19939 | Coment.: 61

Últimamente o fórum vem sofrendo com muitas pessoas postando pirataria e esse não é o intuito do mesmo. A pira...
Guilherme Junqueira
20 de Fevereiro de 2018, 20:18 por Guilherme Junqueira
Visual.: 17090 | Coment.: 4

Boa noite pessoal, venho apresentar para vocêsLinks Bloqueados para Visitantes. Registre-se ou Login...

* Equipe

Guilherme Junqueira admin Guilherme Junqueira
Administrador
Alobus gmod Alobus
Moderador Geral

* Tópicos Recentes