Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

CrynB

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

Mensagens Recomendadas

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,

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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/)

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Editado por Baderous
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.