Jump to content
CrynB

Como fazer a interface gráfica de um pequeno jogo.

Recommended Posts

CrynB

Boas pessoal, sou novo neste forum, por isso peço desculpa se a minha dúvida já foi questionada e/ou resolvida. Já procurei bastante mas não encontrei. Por isso pedia uma ajuda, gostava de fazer a "interface gráfica" de um pequeno jogo como por exemplo, o slide puzzle.

Como podem ver um exemplo nesta foto.

xcTnfph.png

Alguém me sabe e/ou consegue ajudar?

Desde já obrigado,

Share this post


Link to post
Share on other sites
nelsonr

Boas CrynB,

provavelmente tens várias hipoteses, mas convêm especificares quais os limites.

Queres usar uma biblioteca gráfica?

Tem de ser multiplataforma?

Eu normalmente uso o SFML (http://www.sfml-dev.org/)

Share this post


Link to post
Share on other sites
CrynB

boas nelsonr, agradeço por me responderes.

Eu sou um pouco novato ainda, mas eu para programar c++ uso o Microsoft Visual Studio 2012 e/ou Eclipse.

"Queres usar uma biblioteca gráfica?

Tem de ser multiplataforma?"

A estas questões não te sei responder, mas eu gostava de fazer como a print que mostrei no eclipse por exemplo, um video ou tutorial iria ajudar bastante :D também já procurei na net, mas ainda não consegui encontrar nada, por isso recorri a este fórum.

Muito obrigado, se mais alguém me pudesse ajudar, ficaria agradecido.

Share this post


Link to post
Share on other sites
nelsonr

Podes dar uma vista de olhos no SFML como tinha dito.

Exemplo de como abrir uma janela gráfica:

http://www.sfml-dev.org/tutorials/2.0/graphics-draw.php

Desenhar formas

http://www.sfml-dev.org/tutorials/2.0/graphics-shape.php

Verificar periféricos

http://www.sfml-dev.org/tutorials/2.0/window-inputs.php

Também tens por exemplo o SDL (http://www.libsdl.org/) e o Allegro (http://alleg.sourceforge.net/)

  • Vote 1

Share this post


Link to post
Share on other sites
CrynB

Mais uma vez, obrigado nelson.

Eu ainda não consegui perceber muito bem, por isso queria pedir que me ajudassem num exemplo prática. Neste simples "jogo", alguém me consegue ajudar, ou seja, alguém consegue fazer o que pretendo e que não se importe de partilhar?

#include <iostream>
#include <stdlib.h>     //para poderem usar o rand()
#include <windows.h>    //para poderem usar o GetTickCount()
using namespace std;

/* VARIÁVEIS GLOBAIS
  Estas variáveis podem ser usadas por todas as funções do programa! */



int escolha;    //as escolhas do utilizador
int numero;     //o numero para adivinhar
int ContadorTentativa;  //conta o numero de tentativas
int numeroTentativa;    //numero disponivel de tentativas
bool done = false;

void Dica(int escolha);         //mostra uma dica
void Menu();                    //menu do jogo
void inGame();                  //dentro do jogo
void novoJogo();                //cria novo jogo
void Ganhou();                  //mensagem mostrada a quem ganhou
void Perdeu();                  //... a quem perdeu

int getRandom(int de, int ate)  //gera numeros aleatorios
{
   int random;
   ate -= de;
   random = rand() % (ate + 1) + de;
   return random;
}

int main()
{
   srand(GetTickCount());
   cout << "Bem-Vindo ao JOGO ADIVINHA O NUMERO - VERSAO 2" << endl;
   cout << "Por Joao Portela a.k.a. Agnor" << endl;

   while(!done)
   {
       Menu();
   }

   cin.get();
   return 0;
   //ja viram que main pequeno? 
}

void Menu()
{
   cout << "\nO que pretende fazer?" << endl;
   cout << "\n1 - Novo jogo" << endl;
   cout << "2 - Sair" << endl;
   cin >> escolha;

   switch(escolha)
   {
       case 1:
           novoJogo();
           break;
       case 2:
           done = true;    //acaba o loop do while
           break;
       default:
           cout << "\nErro...Tecla errada" << endl;
           Menu(); //volta ao menu
           break;
   }
}

void novoJogo()
{
   ContadorTentativa = 0;
   cout << "\nEscolha o nivel de dificuldade:" << endl;
   cout << "1 - 1 a 10" << endl;
   cout << "2 - 1 a 20" << endl;
   cout << "3 - 1 a 30" << endl;
   cout << "4 - 1 a 40" << endl;
   cout << "E por ai a diante " << endl;
   cin >> escolha;

   if (escolha <= 0)
   {
       cout << "\nErro, numero menor ou igual a 0...\nIniciando com nivel 1" << endl;
       escolha = 1;
   }

   cout << "\nEscolheu de 1 a " << escolha * 10 << endl;

   numeroTentativa = escolha + 1;

   numero = getRandom(1, 10*escolha);

   inGame();

}

void inGame()
{
   if ((numeroTentativa - ContadorTentativa) > 0)
   {
       cout << "\nNumero de tentativas restantes: " << numeroTentativa - ContadorTentativa << endl;
       cout << "Insira um numero: ";
       cin >> escolha;
       ContadorTentativa++;

       if (escolha == numero)
       {
           Ganhou();
       }

       else
       {
           Dica(escolha);
       }
   }

   else
   {
       Perdeu();
   }
}

void Ganhou()
{
   cout << "\nParabens, Ganhou!!!" << endl;
}

void Perdeu()
{
   cout << "\nPode ser que tenhas mais sorte para a proxima... perdeste..." << endl;
}

void Dica(int escolha)
{
   if (escolha < numero)
       cout << "\nTem que apostar mais para cima" << endl;
   else
       cout << "\nTem que apostar mais para baixo" << endl;

   inGame();
}

Mais uma vez, muito obrigado.

Edited by Baderous
geshi

Share this post


Link to post
Share on other sites
nelsonr

Passar de modo texto para grafico não é algo que se possa fazer assim num exemplo simples.

Em modo gráfico (e pelo exemplo), tens de ter botões a funcionar, texturas, etc

Share this post


Link to post
Share on other sites
pikax

da' uma vista de olhos aqui http://lazyfoo.net/SDL_tutorials/index.php


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
CrynB

Muito obrigado a todos. Eu irei continuar a minhas pesquisas e vou ver o que vocês sugeriram. Quero mesmo conseguir fazer algo parecido aquela print xD

Share this post


Link to post
Share on other sites
eatg75

@CrynB aconselho-te a dares uma vista de olhos no Clanlib SDK, que e um SDK de densolvimento de aplicacoes graficas : como jogos, simulacoes, etc... alem de ser multiplataforma existem bastante exemplos de como utilizar o SDK.

Em relacao a tua primeira questao em como desenhar o menu de um jogo parecido com a da fotografia o processo resume-se em desenhar a imagem de fundo e desenhar a imagem de cada entrada do menu em uma determinada posicao, depois obtendo o retangulo de cada imagem, a seguir obter o comprimento do texto utilizando a fonte num determinado tamanho e desenha-lo centrado no retangulo, o processo resume-se a algo como isto.


Victarion seized the dusky woman by the wrist and pulled her to him.

Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see.

Moqorro's dark eyes seemed to shine.

Moqorro - I see dragons.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.