jogo-da-velha's People
Forkers
sallesifspjogo-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çãovoid 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ódigoextern 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áveisint** mgame
,int* pone
,int* ptwo
,struct possibilities* vectorp
eint turn
.- Lembrete:
#include "nome_do_arquivo.h"
(sem os sinais de maior e menor, nesse caso é aspas mesmo) e usar o códigoextern
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:
-
Função
void fillGame(int input)
: essa função será encarregada de preencher a matriz do jogomgame
com as jogadas. Utilizar o laço de decisãoswitch(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 deturn
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 vetorpone
ou no vetorptwo
de acordo com o valor da variávelturn
- 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.
-
Função
void startMultiplayer()
: primeiramente deve chamar a funçãobuildVars()
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ávelint finished = 0
(que servirá para controlar se o jogo ainda não acabou) e a variávelint input
(que servirá para guardar o valor ASCII da tecla apertada pelo usuário) e então, utilize o laço de repetiçãowhile
para verificar se a variávelfinished
está com o valor 0 para continuar o jogo e a cada repetição deve pegar o código ASCII por meio da funçãogetch()
e guardar na variávelinput
e usar umif
para verificar se de quem é a vez de jogar (se é a vez do jogador um, então o valor da variávelturn
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çãoverifyWinner()
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
-
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 jogadasvectorp
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:
-
void showPrincipalMenu()
para o menu principal evoid showSinglePlayerMenu()
para o menu do singleplayer
- 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 valorint
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ãoswitch
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
- Para mostrar qual opção está selecionada no momento, escrever
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.