Spead racer


Description

un petit jeu de course de vaisseau spatiaux. la map et générer aléatoirement. il y a un petit générateur de particule. il charge des model au format md2.

j'ai utiliser seulement openGL pour la 3D, SFML pour le fenêtrage(je l'affection pas mal).

note:
attention il y a un bug avec les texture!
par manque de place je n'ai pas pus mettre l'executable

Source / Exemple :


#include <SFML/Graphics.hpp>
#include <iostream>
#include <string>
#include <fstream>

#include "track.h"
#include "player.h"
void runMap(sf::RenderWindow* App)
{
    track map;
    map.spead=2;
    player p;

    time_t start;
    time (&start);

    float score=0;
    bool gameOver=false;

    App->SetCursorPosition(333,300);

    sf::Clock time;
    time.Reset();

    sf::Image IGameOver;
    IGameOver.LoadFromFile("data/game over.png");
    sf::Sprite SGameOver;
    SGameOver.SetImage(IGameOver);

    // Start game loop
    while (App->IsOpened())
    {
        // Process events
        sf::Event Event;
        while (App->GetEvent(Event))
        {
            // Close window : exit
            if (Event.Type == sf::Event::Closed)
                App->Close();

            // Escape key : exit
            if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
                App->Close();

            // Adjust the viewport when the window is resized
            if (Event.Type == sf::Event::Resized)
                glViewport(0, 0, Event.Size.Width, Event.Size.Height);
         }
        p.mPos=(800-App->GetInput().GetMouseX())/3;

        glClearColor(0.5f,0.5f,0.5f,1);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        if(!gameOver)
        {
            map.afficher();
            p.afficher();
            score=time.GetElapsedTime();

            string temp="score: "+floatToString(score);
            sf::String temp2;
            temp2.SetText(temp);
            App->Draw(temp2);
        }
        else
        {
            App->Draw(SGameOver);

            string temp=floatToString(score);
            sf::String temp2;
            temp2.SetText(temp);
            temp2.SetPosition(400,180);
            temp2.Scale(2,2);
            App->Draw(temp2);
        }

        //dificulter
        map.spead=2+time.GetElapsedTime()*0.5;

        App->Display();

        if(map.test(p.mPos) && time.GetElapsedTime()>0.1&& gameOver==false)
        {
            gameOver=true;
        }
    } 
}

int main()
{
    // Create main window
    sf::RenderWindow App(sf::VideoMode(800, 600), "spead racer");
    App.PreserveOpenGLStates(true);
    App.SetFramerateLimit(50);

    sf::Image IMenu;
    IMenu.LoadFromFile("data/menu.png");

    sf::Sprite SMenu;
    SMenu.SetImage(IMenu);

    while (App.IsOpened())
    {
        // Process events
        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit
            if (Event.Type == sf::Event::Closed)
                App.Close();

            // Escape key : exit
            if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
                App.Close();

            // Adjust the viewport when the window is resized
            if (Event.Type == sf::Event::Resized)
                glViewport(0, 0, Event.Size.Width, Event.Size.Height);

         }
        if(App.GetInput().IsKeyDown(sf::Key::G))
        {
            runMap(&App);
        }
        App.Draw(SMenu);

        if(App.GetInput().GetMouseX()<600 && App.GetInput().GetMouseX()>200)
        {
            if(App.GetInput().GetMouseY()<295 && App.GetInput().GetMouseY()>235 && App.GetInput().IsMouseButtonDown(sf::Mouse::Left))
            {
                runMap(&App);
            }
            else if(App.GetInput().GetMouseY()>316 && App.GetInput().GetMouseY()<376 && App.GetInput().IsMouseButtonDown(sf::Mouse::Left))
            {
                cout<<"!:il n'y a pas pour l'instans d'option"<<endl;
            }
            else if(App.GetInput().GetMouseY()>395 && App.GetInput().GetMouseY()<456 && App.GetInput().IsMouseButtonDown(sf::Mouse::Left))
            {
                App.Close();
            }
        }
    
        App.Display();
    }

    return EXIT_SUCCESS;
}

Conclusion :


salut

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.