Page 1 sur 1

Gotong - Pong en GOTO++

MessagePosté: 01 Aoû 2009, 05:34
par Gavos
« Gotong royong, is a conception of sociality familiar to large parts of Indonesia and Malaysia. The phrase has been translated into English in many ways, most of which harken to the conception of reciprocity or mutual aid. » (Wikipedia)

Vous l'aurez compris, c'est bien dans cet esprit de de réciprocité et d'entraide mutuelle ( :confused: ) que je vous présente Gotong, mon premier jeu terminé !

Je suis parti d'un cahier des charges assez ambitieux : faire Pong en mieux. J'en entends déjà certains rire à cette annonce : « Pauvre fou, Pong a nécessité 2 ans de développement à une équipe de 35 développeurs professionels à plein temps ! ». Sachez que j'étais bien conscient de tous les risques d'un projet de cette envergure et c'est la raison pour laquelle j'ai décidé de m'épauler d'un langage alliant puissance, élégance, et simplicité : le GOTO++

Et le résultat est à la hauteur ! J'ai réussi à développer une version améliorée de Pong, avec des graphismes dernier cri (nécessite une carte supportant les Ascii Shaders 4.0), un moteur physique réaliste, et une intelligence artificielle très convaincante. L'ensemble a été rendu possible grâce aux possibilités étonnantes du GOTO++, dont voici une courte liste :
  • programmation orientée objet avec les troupeaux de pingouins et leurs machines à pingouins
  • une gestion haut niveau du multithreading via des instructions telles que GOTOUNIVERSPARALLELEouizzz et BigCrunch
  • support natif de l'exécution aléatoire d'instructions, afin de simplifier le développements d'IA grâce au GOTOGOTO et au GOTOCHEPA
  • couche réseau directement utilisable par les chaussettes et les chaussures (cette fonctionnalité n'a cependant pas été utilisée dans Gotong)
  • expressions rationnelles (Rxmplacxr, OUQUILESTLETEXTE), gestion puissante des exceptions (boum, encasderreurGOTO), etc.
  • et des GOTO partout, bien entendou


En avant première, voilà deux screenshots pour vous mettre l'eau à la bouche.

Image

Image


J'ai essayé de développer ce Pong dans les règles de l'art; j'ai privilégié l'utilisation massive des GOTO pour permettre une grande réutilisabilité et j'ai accordé une importance particulière au nommage de mes variables et labels. Je considère cette version comme finale, il n'y aura pas de nouvelles fonctionnalités dans le futur, seuls les bugs vraiment gênants seront corrigés.

Pour le lancer il vous faut un écran 2 couleurs supportant la résolution 25x80, un système son 0:0 (encore introuvable en France, vous ne pourrez donc pas avoir de son pour le moment) et un clavier 3 touches. Le jeu tourne sous Windows XP mais n'a pas été testé sous Linux; vous pouvez toutefois (vous casser les dents à) compiler la dernière version de GOTO++ sur votre distribution préférée. Pour y jouer sous Windows vous pouvez installer GOTO++ puis double-cliquer sur gotong.gpp. Alternativement vous pouvez aussi ouvrir un terminal et taper "gotopp gotong.gpp".

N'hésitez pas à poster vos remarques ou vos possibilités d'amélioration ! On ne sait jamais, peut-être que je trouverai un jour le courage de réaliser une suite à succès...

MessagePosté: 01 Aoû 2009, 10:14
par Mokona
Eheh, message bien dans l'esprit Goto++, dès que j'ai le temps, je vais voir la source.

Bravo :)

(euh, par contre, le lien sur le gotong.cpp ?

Code source de GPP.

MessagePosté: 01 Aoû 2009, 13:23
par Cygal
Mokona, http://gavos.free.fr/gotong/gotong.gpp

Rigolo, je teste de ce pas. :)

MessagePosté: 01 Aoû 2009, 20:18
par Mokona
Lien corrigé.

MessagePosté: 02 Aoû 2009, 18:11
par Kristof
Sympa le code source :00000013:

MessagePosté: 09 Aoû 2009, 18:12
par NicoL3AS
Tout à fait excellent. De plus je ne connaissait pas le GOTO++ et cela m'a fait beaucoup rire.
A l'occasion je l'utiliserais !

MessagePosté: 21 Jan 2010, 03:43
par Gavos
Hej hej,

D'abord je vous remercie (avec beaucoup de retard) pour vos réactions. Je suis particulièrement content de voir que vous avez apprécié le code source, j'y ai mis beaucoup d'efforts !

Pour la petite histoire, j'avais décidé que mon premier jeu terminé serait un Pong, mais comme ça s'annonçait relativement facile j'en ai profité pour utiliser un langage un peu exotique (ce que je n'aurai peut-être plus jamais l'occasion de faire). Je pensais d'abord utiliser le module Tortue pour la partie graphique mais il s'est révélé assez bugué, du coup je suis parti sur de l'ascii art. Bon, par la suite je me suis rendu compte qu'en fait c'était tout le langage qui était bugué ! Au bout d'un moment j'ai tenté de corriger le code du compilateur/interpréteur GOTO++, mais quelques commentaires du style :

Voici le fameux compilateur, qui vous domine du haut de ses je ne sais
combien de lignes. Bon courage pour comprendre tout ça.


Ceci est un gros switch. C'est la machine virtuelle du GOTO++.
Préparez vous à avoir les cheveux qui se dressent sur la tête.


Point d_T('entrée de l')interpréteur. Affiche des tas de messages marrants.
Bref, des heures d'amusement en perspective.


Des bidules que j'ai eu la flemme de classer. Faut dire que c'est
l'horreur ce programme, avec ces deux classes tellement énorme
qu'on peut pas décemment tout faire rentrer dans deux fichiers.
Il y a essentiellement des machins pour sauver et charger des
programmes.


ont eu raison de moi... Mais le GOTO++ est avant tout un délire (je vous conseille d'ailleurs la lecture de la documentation) alors j'ai quand-même insisté. Au début j'ai essayé de ne pas monter le niveaugourou mais après ma première "boucle for" à coup de goto j'ai abandonné cette idée... Du coup j'ai décidé d'utiliser un maximum de fonctions du langage; il y a d'ailleurs pas mal de bouts de codes qui ne servent à rien ou qui pourraient être énormément simplifiés :D Au final, j'y aurai passé une dizaine de jours, soit beaucoup plus longtemps que prévu, mais je me suis bien amusé :)


Je vous annonce aussi que Gotong jeu tourne maintenant comme une horloge suisse sous Linux ! A quelques accents et plantages près. Bon, il y a aussi des plantages volontaires dans le jeu, mais ce n'est pas de ceux-là que je parlais :p. Pour essayer il suffit de récupérer la version 0.30 patchée et de suivre les instructions du lisezmoi.html. Attention, il vous faudra avoir préalablement intallé g++, cmake et la version de développement de ncurses (libncurses5-dev sous Debian/Ubuntu). Un grand merci à gabriel pour m'avoir aidé à faire ce patch (en gros il a presque tout fait ^^). Je vous donne juste un cheatcode : éviter de taper sur la touche "Entrée" entre les manches, appuyez plutôt sur une flèche, c'est plus sûr :D

Bon, c'est pas tout ça mais j'ai un tétris à finir, moi...

Enfin

MessagePosté: 11 Mai 2010, 11:55
par florianc
Enfin un jeu digne de ce nom sous Linux*! Je ne sais pas si la version que j’ai est la toute dernière, mais je trouve que les personnages sont vraiment bien modélisés, surtout la Raquette de droite. Et merci pour l’indice concernant la touche à appuyer en cas de fin de manche.

Tu devrais publier une soluce un jour…

MessagePosté: 12 Mai 2010, 00:07
par Spoke
Ha j'ai bien rigolé en parcourant le manuel ! En tout cas, sacré mental que tu as eu là Gavos !
Jolie Pong ! =)

http://www.gotopp.org/doc/html/Divers+mots~2Dclefs.html

MessagePosté: 12 Mai 2010, 19:03
par Gavos
Ah florianc, ça fait plaisir de voir quelqu'un qui sait reconnaître un travail de qualité jusque dans ses détails, tu es le premier à avoir remarqué la différence de la raquette droite ! C'est effectivement celle que j'ai modélisée en dernier donc elle a pu profiter des dernières évolutions du logiciel AsciiSMax...

En revanche si tu veux la soluce intégrale il suffit de regarder le code source, c'est tout en français et avec l'excellente documentation qu'à pointé Spoke tu devrais pouvoir le lire comme dans un livre.

Et effectivement, rien que la documentation en elle-même vaut le coup d'oeil :D