Conectar

Ver Versão Completa : Criando um Jogo da Velha!!!



CCV_HEALbra
31-05-2008, 11:15 AM
ahaaaa

depois de muito apanhar..e refazer o codigo inteiro.eu consegui fazer o melhor e mais viciante jogo do mundo1!!!

Heal's Jogo da velha!!

pirou hein??

comecei a partir desse tuto aqui:

zcev82OMW1E

bom....meio dificil de seguir....mas no final deu tudo certo!!

segue o link do jogo:

Link (http://www.ericmaicon.com.br/jogo_velha.rar)

espero q nao viciem no jogo..pq ai vou ter q atualizar...kkkk

bom...começando o tutorial...

baixe o microsoft visual studio c++ express 2008:

http://baixaki.ig.com.br/download/Visual-Basic-2008-Express-Edition.htm

eh free.....:D:D:D

bom..

depois e instalado vai aparecer a tela:

http://img525.imageshack.us/img525/8309/28156935ld3.jpg

clice em File>>New>>Project

faça como na figura:

http://img260.imageshack.us/img260/2413/34743476tx9.jpg

depois clique em Next
marque a opção Empty Project e clique em Finish!

depois vá em Project>>Add New Item

coloque o nome de main.cpp e selecione c++ File!!

dê ADD!.

depois vá em Project>>Propriets (ou Jogo_velha Propriets ou ainda alt+f7)

vá na aba configuration propriets >> Linker>> System

na opção SubSystem coloque Console(/SUBSYSTEM:CONSOLE)...como na figura:

http://img137.imageshack.us/img137/2957/75882956fj4.jpg

Pronto! seu projeto está pronto para se começado!!

vamos botar pra rodar essa joça:

na main.cpp (estará em branca)...vamos começar a digitar nosso código!

Incluindo as bibliotecas:

#include <iostream>

chamando a função principal:

void main() {

declarando todas as variáveis que vamos usar:

char quad1('1');
char quad2('2');
char quad3('3');
char quad4('4');
char quad5('5');
char quad6('6');
char quad7('7');
char quad8('8');
char quad9('9');
char mascara;
char movimento;
char novamente;

int turno('1');

bool fim(false);
bool venceu(false);
bool movi_valido;

setando o turno para o primeiro jogador e colocando o nome do jogo:

turno = 1;

std::cout << "Esse eh o Heals Jogo da Velha! Bom Jogo:" << std::endl;

vamos agora fazer o loop prinicpal do jogo...q é somente assim a lógica:

se o fim for diferente de true...ele continua rodando!!

e vamos tb desenhar nosso tabuleiro:

do {
std::cout << quad1 << "|" << quad2 << "|" << quad3 << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << quad4 << "|" << quad5 << "|" << quad6 << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << quad7 << "|" << quad8 << "|" << quad9 << std::endl;

vamos definir quem eh X ou quem eh O!!

if(turno == 1) {
mascara = 'X';
} else {
mascara = 'O';
}

std::cout << "Jogador N " << turno << ":" << std::endl;

agora vamos ver qual o numero q o cara escolheu...tipo..se o jogador 1 escolheu 1..aparece o X...se o 2 escolheu o 7...aparece o O:


do {

std::cin >> movimento;
movi_valido = true;

if(movimento == '1' && quad1 == '1') {
quad1 = mascara;
} else if(movimento == '2' && quad2 == '2') {
quad2 = mascara;
} else if(movimento == '3' && quad3 == '3') {
quad3 = mascara;
} else if(movimento == '4' && quad4 == '4') {
quad4 = mascara;
} else if(movimento == '5' && quad5 == '5') {
quad5 = mascara;
} else if(movimento == '6' && quad6 == '6') {
quad6 = mascara;
} else if(movimento == '7' && quad7 == '7') {
quad7 = mascara;
} else if(movimento == '8' && quad8 == '8') {
quad8 = mascara;
} else if(movimento == '9' && quad9 == '9') {
quad9 = mascara;
} else {
std::cout << "Movimento invalido. Tente Novamente." << std::endl;
movi_valido = false;
}
} while (!movi_valido);

agora vamos ver...como ganhar...caso ele fez alguma sequencia certa:


//as possibilidades de winner!!
if(quad1 != '1') {
if(quad2 == quad1 && quad3 == quad1) {
fim = true;
venceu = true;
}
if(quad4 == quad1 && quad7 == quad1) {
fim = true;
venceu = true;
}
}
if(quad5 != '5') {
if(quad1 == quad5 && quad9 == quad5) {
fim = true;
venceu = true;
}
if(quad2 == quad5 && quad8 == quad5) {
fim = true;
venceu = true;
}
if(quad4 == quad5 && quad6 == quad5) {
fim = true;
venceu = true;
}
if(quad3 == quad5 && quad7 == quad5) {
fim = true;
venceu = true;
}
}
if(quad9 != '9') {
if(quad3 == quad9 && quad6 == quad9) {
fim = true;
venceu = true;
}
if(quad7 == quad9 && quad8 == quad9) {
fim = true;
venceu = true;
}

}

agora vamos ver se vai dar velha!

//vendo se deu velha!!
if(quad1 != '1' && quad2 != '2' && quad3 != '3' &&
quad4 != '4' && quad5 != '5' && quad6 != '6' &&
quad7 != '7' && quad8 != '8' && quad9 != '9' && !fim) {

fim = true;
venceu = false;
}

agora vamos aos finalmente!!

se fim = true quer dizer q acabou!!

ai devemos ver se ganhou ou deu game over, devemos tb dar a msg de vencedor, e a opção de jogar de novo..

e também nessa opção vamos cetar em qual jogador está cada jogada:

if(fim) {
std::cout << quad1 << "|" << quad2 << "|" << quad3 << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << quad4 << "|" << quad5 << "|" << quad6 << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << quad7 << "|" << quad8 << "|" << quad9 << std::endl;

if(venceu) {
std::cout << "Jogador " << turno << " Ganhou!!!" << std::endl;
}

std::cout << "Fim de Jogo!" << std::endl;
std::cout << "Jogar de novo??(s/n)" << std::endl;

std::cin >> novamente;

if(novamente == 's') {
fim = false;

quad1 = '1';
quad2 = '2';
quad3 = '3';
quad4 = '4';
quad5 = '5';
quad6 = '6';
quad7 = '7';
quad8 = '8';
quad9 = '9';
turno = 1;
}
} else {
if(turno == 1) {
std::cout << turno << std::endl;
turno = 2;
} else {
std::cout << turno << std::endl;
turno = 1;
}
}
} while(!fim);
}

bom...
acabou...ficou bem comprimido o tuto pra vcs aprenderem (eu já sei...hahaha)

fonte total do main.cpp:


#include <iostream>

void main() {
char quad1('1');
char quad2('2');
char quad3('3');
char quad4('4');
char quad5('5');
char quad6('6');
char quad7('7');
char quad8('8');
char quad9('9');
char mascara;
char movimento;
char novamente;

int turno('1');

bool fim(false);
bool venceu(false);
bool movi_valido;

turno = 1;

std::cout << "Esse eh o Heals Jogo da Velha! Bom Jogo:" << std::endl;

//Loop principal do jogo
do {
std::cout << quad1 << "|" << quad2 << "|" << quad3 << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << quad4 << "|" << quad5 << "|" << quad6 << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << quad7 << "|" << quad8 << "|" << quad9 << std::endl;

if(turno == 1) {
mascara = 'X';
} else {
mascara = 'O';
}

std::cout << "Jogador N " << turno << ":" << std::endl;

//marcações do game!!
do {

std::cin >> movimento;
movi_valido = true;

if(movimento == '1' && quad1 == '1') {
quad1 = mascara;
} else if(movimento == '2' && quad2 == '2') {
quad2 = mascara;
} else if(movimento == '3' && quad3 == '3') {
quad3 = mascara;
} else if(movimento == '4' && quad4 == '4') {
quad4 = mascara;
} else if(movimento == '5' && quad5 == '5') {
quad5 = mascara;
} else if(movimento == '6' && quad6 == '6') {
quad6 = mascara;
} else if(movimento == '7' && quad7 == '7') {
quad7 = mascara;
} else if(movimento == '8' && quad8 == '8') {
quad8 = mascara;
} else if(movimento == '9' && quad9 == '9') {
quad9 = mascara;
} else {
std::cout << "Movimento invalido. Tente Novamente." << std::endl;
movi_valido = false;
}
} while (!movi_valido);

//as possibilidades de winner!!
if(quad1 != '1') {
if(quad2 == quad1 && quad3 == quad1) {
fim = true;
venceu = true;
}
if(quad4 == quad1 && quad7 == quad1) {
fim = true;
venceu = true;
}
}
if(quad5 != '5') {
if(quad1 == quad5 && quad9 == quad5) {
fim = true;
venceu = true;
}
if(quad2 == quad5 && quad8 == quad5) {
fim = true;
venceu = true;
}
if(quad4 == quad5 && quad6 == quad5) {
fim = true;
venceu = true;
}
if(quad3 == quad5 && quad7 == quad5) {
fim = true;
venceu = true;
}
}
if(quad9 != '9') {
if(quad3 == quad9 && quad6 == quad9) {
fim = true;
venceu = true;
}
if(quad7 == quad9 && quad8 == quad9) {
fim = true;
venceu = true;
}

}

//vendo se deu velha!!
if(quad1 != '1' && quad2 != '2' && quad3 != '3' &&
quad4 != '4' && quad5 != '5' && quad6 != '6' &&
quad7 != '7' && quad8 != '8' && quad9 != '9' && !fim) {

fim = true;
venceu = false;
}

if(fim) {
std::cout << quad1 << "|" << quad2 << "|" << quad3 << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << quad4 << "|" << quad5 << "|" << quad6 << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << quad7 << "|" << quad8 << "|" << quad9 << std::endl;

if(venceu) {
std::cout << "Jogador " << turno << " Ganhou!!!" << std::endl;
}

std::cout << "Fim de Jogo!" << std::endl;
std::cout << "Jogar de novo??(s/n)" << std::endl;

std::cin >> novamente;

if(novamente == 's') {
fim = false;

quad1 = '1';
quad2 = '2';
quad3 = '3';
quad4 = '4';
quad5 = '5';
quad6 = '6';
quad7 = '7';
quad8 = '8';
quad9 = '9';
turno = 1;
}
} else {
if(turno == 1) {
std::cout << turno << std::endl;
turno = 2;
} else {
std::cout << turno << std::endl;
turno = 1;
}
}
} while(!fim);
}

para compilar aperte crtl+f5...ele nao terá nenhum erro (se seguiu o tuto inteiro) e irá abrir uma janela em DOS:

bom....com isso ele deverá rodar assim:

http://img75.imageshack.us/img75/9026/47019942pi1.jpg

eh em DOS..mais pra frente vou tentar passar pra imagem..nao sei como ainda!!!
hahah

mas ai..bom aproveito!!

espero q gostem!!

o tuto foi totalemnte feito por mim...porém eu basiei inteiramente na vídeo aula....eu fiz todo o fonte baseado lá!!!

CCV_Bane
31-05-2008, 02:07 PM
Uia legal esse tuto, dá pra aprende o basicão seguindo ele ^^ Eu queria monta estilo imperia ou war o.0
Vo me vicia aqui em jogo da velha...

CCV_Jh0n
01-06-2008, 08:43 PM
HealBra Vc faz algum curso né ?
Qual curso?
Ou aprende na ''raça''

Eu vi uma paradas dessa de fazer tipo uma reação a cada movimento do jogador na materia Inteligencia Artificial ...
O cara ensina a fazer as possibilidades ... etc.. aqueles NPCs dos jogos iteragirem com o jogador ... tipo andar conversar ter toda uma reação é muito rox a materia ... eu tranquei essa materia porque eu n tinha a programação necessaria + eu comecei a fazer jogo da velha ... :P
Da hora veio :P
e aproveitando tem como fazer aquele flash que pedi lá no design ... coloquei umas imagens lá + não sei como vc quer etc...
Valeu man t amu!

WoNHommer
02-06-2008, 06:48 PM
lembro de ter feito isso quando eu tava tentando aprender C++.. Foi tranquilo, mas tambem foi a unica coisa que eu consegui fazer ahuahahauhaua
C++ pra aprender sozinho é complicado -.-

Mas eu sou brasileiro, não vou desistir! (só se for pra aprender flash+ajax+javascript, e, o básico, PHP :P)

CCV_HEALbra
03-06-2008, 09:50 PM
vc tá falando q php, flash+ajax e js eh foda??

nao entendi!
:S