Giter VIP home page Giter VIP logo

jogo-da-velha's People

Contributors

izamglima avatar

Stargazers

 avatar

Watchers

Gabriel Barzagli avatar Boaz Gustavo avatar  avatar

Forkers

sallesifsp

jogo-da-velha's Issues

Desenvolvimento da interface gráfica - Exibição do jogo

Primeiramente será necessário iniciar com a representação gráfica do jogo (linhas e colunas em formato de matriz 3 x 3).

  • Criar um arquivo C com o nome graphicinterface onde terá a função void printGame() que exibirá as linhas do jogo da velha e as respectivas jogadas. No início da função deve ter o comando para apagar a tela -- system("cls") -- e logo em seguida, exibir as linhas e jogadas dos jogadores. -- printf()

    - Lembrete 1: Para imprimir na tela variáveis do tipo int usar %d no printf.
    - Lembrete 2: Cada posição de uma matriz você consegue pegar passando entre colchetes o numero da linha e em outros colchetes o numero da coluna. Ex: matriz[linha][coluna] - Note que agora em C a contagem de posições começa no 0 e não no 1 como era no VisualG.

  • Essas jogadas serão preenchidas em uma matriz que os respectivos arquivos de modos de jogo irão preenchê-los. Importar o arquivo de variáveis globais (globalvars.h) que é onde estará a matriz de jogadas.

    - Lembrete: #include "nome_do_arquivo.h" (sem os sinais de maior e menor, nesse caso é aspas mesmo) e usar o código extern int** mgame para usar essa variável que está no arquivo que você importou.

  • Criar arquivo H com o mesmo nome do arquivo C e dentro dele, as assinaturas das funções criadas.

    - Lembrete: Assinatura da função é: int funcao(int a, int b)

Desenvolvimento do multiplayer

  • Criar um arquivo C com o nome multiplayer

  • Importar o arquivo de variáveis globais (globalvars.h) para pegar as variáveis int** mgame, int* pone, int* ptwo, struct possibilities* vectorp e int turn.

    - Lembrete: #include "nome_do_arquivo.h" (sem os sinais de maior e menor, nesse caso é aspas mesmo) e usar o código extern para usar as variáveis que estão nesse arquivo. Ex: extern int** mgame;

  • Criar arquivo H com o mesmo nome do arquivo C e dentro dele, as assinaturas das funções criadas.

    - Lembrete: Assinatura da função é: void fillgame(int input);

  • Funções:

  1. Função void fillGame(int input): essa função será encarregada de preencher a matriz do jogo mgame com as jogadas. Utilizar o laço de decisão switch(input) para decidir qual ação tomar de acordo com o código ASCII da tecla passada por parâmetro na função.
    As teclas disponíveis são as do numpad.
    Colocar o valor de turn na posição da matriz onde a tecla digitada representa (lembre de verificar se nenhum jogador já preencheu esse lugar da matriz) e guardar a tecla apertada no vetor pone ou no vetor ptwo de acordo com o valor da variável turn - se a variável turn for 1, coloca no pone ou se for 2, coloca no ptwo.
    Depois de preencher a matriz e guardar o valor da tecla no vetor correspondente, alterar o valor do turn.

    - Lembrete: Cada posição de uma matriz é representado passando entre colchetes o numero da linha e em outros colchetes o numero da coluna. Ex: matriz[linha][coluna] - Note que agora em C a contagem de posições começa no 0 e não no 1 como era no VisualG.

  2. Função void startMultiplayer(): primeiramente deve chamar a função buildVars() que eu criei no arquivo que foi importado para inicializar as variáveis globais.
    Depois, perguntar aos jogadores os seus nomes e armazenar em uma variável.
    Criar a variável int finished = 0 (que servirá para controlar se o jogo ainda não acabou) e a variável int input (que servirá para guardar o valor ASCII da tecla apertada pelo usuário) e então, utilize o laço de repetição while para verificar se a variável finished está com o valor 0 para continuar o jogo e a cada repetição deve pegar o código ASCII por meio da função getch() e guardar na variável input e usar um if para verificar se de quem é a vez de jogar (se é a vez do jogador um, então o valor da variável turn será 1, senão será 2).
    Para ambos os jogadores, chamar a funçãofillgame(int input) passando como parâmetro essa variável input e por último, chamar a função verifyWinner() e guardar seu valor na variável finished. Se o finished for igual a 1, alterar o valor de turn para o jogador que acabou de realizar a jogada.

    Site para consultar a tabela ASCII completa: http://187.7.106.14/marcelo/org_comp/tabelaASCII.pdf

  3. Função int verifyWinner(): essa função só deve ser chamada depois que pelo menos um usuário completou um mínimo de 3 jogadas. Então, deve percorrer todas as posições do vetor de possibilidades de sequência de jogadas vectorp e verificar se no vetor de cada jogador (pone ou ptwo) possui a sequência de jogadas correspondente. Caso o jogador possua, retornar o valor 1, senão retornar o valor 0.

    - Dica: o vetor vectorp é do tipo struct possibilities que eu criei (o código struct permite criar um tipo de variável novo, personalizado) possui 3 variáveis int dentro dele que podem ser acessíveis desse jeito: vectorp[0].v1 / vectorp[0].v2 / vectorp[0].v3

Desenvolvimento da interface gráfica - Menu

Será feito dois menus. O primeiro será exibido logo ao abrir o jogo e terá as opções "Singleplayer", "Multiplayer", "Ranking" e "Sair". O segundo menu aparecerá quando for selecionado a opção singleplayer e mostrará as opções "Fácil", "Intermediário" e "Difícil".

  • Criar um arquivo C com o nome menu e um arquivo H.
  • Importar a biblioteca conio.h no arquivo C -- #include <conio.h>

Criar as funções:

  1. void showPrincipalMenu() para o menu principal e void showSinglePlayerMenu() para o menu do singleplayer
    menup
    menus

    • Para mostrar qual opção está selecionada no momento, escrever --> antes do nome da opção.
    • Usar o comando getch() para capturar a tecla que o usuário apertar, essa função retorna um valor int que é correspondente ao código ASCII do teclado. Guardar o retorno dessa função em uma variável e usar o laço de decisão switch para determinar qual ação deve ser executada ao apertar a tecla. A tecla 8 vai selecionar uma opção acima e a tecla 2 vai selecionar uma abaixo. Quando o usuário apertar as teclas, apague a tela e reexiba o menu com a opção abaixo ou acima selecionada e caso seja apertada a tecla enter para confirmar a seleção, execute a função da opção correspondente que ele selecionou.

    - Dica: Você pode controlar qual opção está selecionada usando uma variável int.
    Por exemplo, no início essa variável ser igual a 1 e quando for apertada a tecla 2, acrescentar um para representar a opção debaixo e apertando 8, subtrai um para representar a opção acima.

    Site para consultar a tabela ASCII completa: http://187.7.106.14/marcelo/org_comp/tabelaASCII.pdf

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.