Ir ao conteúdo
  • Cadastre-se
Fran Botene

C++ c++ Como fazer com que clique em jogar novamente e o jogo começe do zero?

Posts recomendados

Estou criando um jogo endless runner, só que quando o personagem morre, e clica pra jogar de novo ele nao reseta as informações, quando escolhe outro personagem ele sempre vai pro que foi escolhido primeiro. Já tentei varias coisas, mas nada funciona. Estou usando classes. Se alguem puder ajudar ficaria mt feliz.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez pudesse detalhar a estrutura das classes, os destrutores, construtores, a maneira como salva a s informações durante o jogo, essas coisas. Tem uma especificação do jogo? A estrutura dos dados a serem salvos?

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Fran Botene       para iniciar do zero você pode inicializar as variáveis novamente , voltando elas para o valor que eram no início , antes de começar o jogo .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@arfneto eu estou usando uma biblioteca, libUnicornio. e no primeiro semestre do meu curso, então ta mais ou menos.

 

<

#pragma once
#include "libUnicornio.h"

enum Status { subindo, descendo, correndo, morrendo };

class Personagem
{
public:
    Personagem();
    ~Personagem();

    void inicializar(bool m);
    void atualizar();
    void desenhar();
    void vidaMais() { vidas++; }

    int getPontuacao() { return pontuacao; }


    float getx() { return x; }
    float gety() { return y; }
    int getVida() { return vidas; }
    Sprite getSprite() { return sprite; }

    void Dano() { vidas--; }


protected:
    Sprite sprite;
    float x, y;
    Status status;
    bool Menina;

    float aceleracao = 0;
    int pontuacao;
    int vidas;
    bool vivo;
};

>

<

#pragma once
#include "libUnicornio.h"

enum TipoObjeto
{
    objParado, objMovel
};


class Objeto
{
public:
    Objeto();
    ~Objeto();

    void inicializar(TipoObjeto t);
    void atualizar();
    void desenhar();
    Sprite getSprite() { return sprite; }
    float getX() { return x; }
    float getY() { return y; }


protected:
    int contadorVelocidadeCenario = 0;
    float velocidadeCenario = 5;
    TipoObjeto tipo;
    Sprite sprite;
    float x, y;
    int objRand, rot, randRot;
};

<

#pragma once
#include "Personagem.h"
#include "Objeto.h"

enum Telas
{
    tMenu, tInstrucoes, tCreditos, tJogar, tJogo, tGameOver, tPause, tSair
};

enum Botao 
{
    bJogar, bSair, bContinuar, bMenu, bCreditos, bInstrucoes, bMenina, bMenino
};


class Jogo
{
public:
    Jogo();
    ~Jogo();

    void inicializar();
    void finalizar();

    void executar();

    bool getMenina() { return Menina; }
    
protected:
    int contadorVelocidadeCenario = 0;
    Personagem personagem;
    float velocidadeCenario = 3;
    bool Menina;
    Telas telaAtual;
    void telaMenu();
    void telaIntrucoes();
    void telaCreditos();
    void telaGameOver();
    void telaJogar();
    void telaJogo();
    void telaPause();    
    Sprite fundo1, fundo2;
    float xFundo1 = 670, yFundo1 = 377, xFundo2 = 2010, yFundo2 = 377;       
    Texto tPontuacao;
    BotaoSprite botões[8];
    int musica = 0;
    Objeto objParados;
    Objeto objmoveis;
    bool Musica;
};

>

>

adicionado 0 minutos depois

@devair1010 Eu pensei nisso, e criei um metodo no meu personagem de resetar, setando tudo para os valores iniciais, mas nao ta rolando.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jogo tem um único construtor e um método inicializar(), mesmo caso do Personagem. 

Você escreveu esses métodos? Ou pode usar override e redefinir algo? Esse é o ponto onde pode salvar status para recontruir os personagens por exemplo. Ou suspender um jogo, essas coisas

  • Curtir 1
  • Triste 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@arfneto Eu nao aprendi override, nem salvar status. Os metodos eu coloquei só sprites, x, y , testar colisoes, musica essas coisas. 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
57 minutos atrás, Fran Botene disse:

@arfneto Eu nao aprendi override, nem salvar status. Os metodos eu coloquei só sprites, x, y , testar colisoes, musica essas coisas. 

 

Entendo. Mas ao iniciar as classes algo vai, provavelmente no método inicializar, criar os objetos todos, como os Personagens. Se você não escreveu nada disso então não deve mesmo salvar nada. Essa biblioteca que está usando é baseada em SDL não é? 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@arfneto eu nao sei o que eh SDL, mas fiz uma gambiarra muito doida e ta funcionando. Obrigada :)

Compartilhar este post


Link para o post
Compartilhar em outros sites
16 minutos atrás, Fran Botene disse:

@arfneto eu nao sei o que eh SDL, mas fiz uma gambiarra muito doida e ta funcionando. Obrigada :)

:D

Muito bom!

 

SDL é a biblioteca que foi usada para construir essa que está usando, libUnicornio. Eu não conhecia essa mas já usei a

primeira. Pode ver mais no site da SDL

Encontri o site de referência da libUnicornio e lá tem um documento de introdução... Talvez você devesse fdar uma olhada se ainda não fez isso. Está em https://github.com/GuilhermeAlanJohann/libUnicornio/blob/master/libUnicornio/docs/Como começar.txt

Direto do autor

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!