4 votes

C++ Création de graphiques de jeux en 2D avec GTK+

Je suis intéressé par la réalisation d'un jeu de stratégie à interface graphique intensive avec C++ et GTK+. J'aimerais savoir s'il est possible d'ajouter des graphiques de jeu en 2D à un programme GTK. En fait, je voudrais quelque chose qui ressemble à un écran de jeu, avec des graphiques 2D interactifs, flanqué de menus et la possibilité de naviguer vers d'autres écrans qui ne seraient que des interfaces graphiques.

Notez que je n'ai jamais utilisé GTK auparavant, et que je n'ai jamais programmé d'interface graphique (ni de graphiques non plus).

5voto

ptomato Points 24461

C'est certainement possible avec GTK, mais vous devez vous demander si vous utilisez le bon outil pour ce travail. Utilisez Clutter, qui est beaucoup plus adapté à l'animation et s'intègre à GTK ; ou mieux encore, utilisez une boîte à outils de programmation de jeux.

Ici Voici un exemple de deux jeux de validation de concept non intensifs écrits avec Clutter, avec des liens vers leur code source.

4voto

ApprenticeHacker Points 6263

C'est possible. Je l'ai fait avec GTK et Vala il y a quelques temps. Voici une article de blog J'ai écrit à ce sujet. En gros, c'est très proche des jeux que l'on fait avec Java et Swing. Il suffit de remplacer le expose et créer un timer pour les redessinages réguliers. Ici Un article sur le développement d'un jeu de serpent en 2D avec PyGTK.

En pseudocode, tout ce que vous faites pour l'infrastructure du jeu est :

start()
{
    tick_timer( 1.0 / FPS );
    load_all_sprites_etc();
}

tick()
{
    update();
    game_board.expose(); // game_board is a GTKWidget, preferably a DrawingArea
}

expose_event()  // connected to game_board
{
    drawing_code();
}

update() 
{
    game_physics();
    game_logic();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X