logo Homepage
+  NewbieContest
|-+  Programmation» Langages compilés» [général] Gun-Tactyx
Username:
Password:
Pages: [1] 2
  Imprimer  
Auteur Fil de discussion: [général] Gun-Tactyx  (Lu 20577 fois)
Perfect Slayer

Profil challenge

Classement : 3031/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« le: 02 Novembre 2005 à 09:06:39 »

(http://gameprog.it/hosted/guntactyx/images/title1.jpg)

Salut tout le monde ! Comme le serveur de NC est un peu foutu et que je peux pas mettre la V2 tant qu'il est pas réparé : j'ai décidé de me remettre à un projet qui m'avait l'air sympa : la programmation de robot de combat sur plateforme multi-agent (j'ai trouvé ça ua hazard sur le net, vous pensez bien que chercher un pareil dans google ne me serait pas venu à l'esprit ! )

Bon alors finit le blabla mais kézako ? C'est simple : il s'agit en fait de programmer des bots de combat dans un lagage proche du C (j'avais déjà voulu le faire mais les seuls sites que j'avais trouvé, ca ressemblait plus à du JAVA). De plus, l'avantage de celui que j'ai choisit : il est en 3D (c'est plus joli mais peut aussi etre éxécuté en 2D). Il y a plusieurs modes de jeu : DM, CTF et course je crois.

Le but est simple : coder le meilleur robot ! sachant que chacun à un proc de 10KHz et 32 de ram (et oui ! vous etes limité ! alors faudra se creuser la tete pour  son robot ne lague pas avec un code de terminator V32.1 Béta qui fait que des bugs à la con... (comment ca j'me suis tiré 5 balles dans le bas avant de pointer mon arme sur le vieux monsieur de la boutique ?? --> Référence à Ghost in the Shell 2 : inocence)). Apres, un petit compilateur compile vos bots et un simulateur les fait combatre.. un contre un ? oui c'est possible ! Mais ca va quand meme jusqu'à 4 équipe de 64 bots... Et là ! Ca devient sport ! Parce que quand une pluie de grenade est envoyée : s'ils sont 64 avec les memes instructions.. Bah ils sont tous dans la meme zone ! Mais bon.. un autre avantage c'est que plus ils sont nombreux sur une cible : plus ils sont forts.. Enfin le challenge est parsemé de pleins de petites réfléxion comme ca..

Le but final de la chose est bien sur de remporter les tournois organisés assez souvent par le site.. Plusieurs centaines de combats pour départager les meilleurs. A noter que les robots peuvent marcher, courir, possède une arme (a munition limitées !!), des grenades, peuvent rammasser des objet sur les cadavres des autres robots..

Pour vous donner une idée : le meilleurs des premiers robots (roger) avait pour point fort : il calculait le déplacement des adversaires (et oui, parce que les balles ont une vitesse ! Alors faut calculer l'angle de tir en fonction du déplacement de l'adversaire !) et se déplacait **orthographe !** lui au hazard ! Un p'tit exemple de code :
Code:
/* "rookie.sma" - simple control code for a team of warriors */
#include "core" // include core functions
#include "math" // include math functions
#include "bots" // include bot specific functions
main() { // the main entry point of the script
  // defines a value to recognize enemy warriors
  new const ENEMY_WARRIOR = ITEM_WARRIOR | ITEM_ENEMY;
  // specifies a time limit to force a change in direction of the warrior
  new const float:MAX_TIME = 10.0 // note the "point" in the constant
  new float:lastTime = getTime()
  // loops forever (or better, until the bot dies)
  while(true) {
    new float:thisTime = getTime()
    if(thisTime-lastTime > MAX_TIME) {
      // changes direction at random every MAX_TIME seconds
      lastTime = thisTime
      new float:randAngle = float(random(21)-10)*1.5708
      rotate(getDirection()+randAngle)
    } else if(sight() < 5.0) {
      // if the warrior is within 5 meters from a wall,
      // change slightly its direction
      rotate(getDirection()+0.31415);
    } else {
      // give a look for the nearest enemy
      new item = ENEMY_WARRIOR;
      new float:dist = 0.0
      new float:yaw
      watch(item,dist,yaw)
      if(item == ENEMY_WARRIOR) {
        // Found one enemy!
        // Do you walk? Stop!
        if(isWalking()) stand();
        // Do you run? Walk!
        else if(isRunning()) walk();
        // Rotate towards enemy direction adding
        // the current direction (absolute) to the
        // enemy direction (relative to the head)
        rotate(getDirection()+yaw);
        // aim and see what is in front of the gun.
        new item
        aim(item)
        // It's an enemy, shoot!
        if(item & ENEMY_WARRIOR == ENEMY_WARRIOR)
          shootBullet()
      } else {
        // Can't find any enemy!
        // Do you walk? Run!
        if(isWalking())
          run();
        // Are you standing?
        else if(isStanding()) {
          // Maybe you collided into someone...
          if(getTouched() & ITEM_WARRIOR != 0)
            // if that is true, make a quarter turn...
            rotate(getDirection()+1.5708);
          else
            // ... otherwise walk.
            walk();
        }
      }
    }
  }
}
Enfin moi, je sens que je vais bien m'amuser. Je vous lache le site : http://gameprog.it/hosted/guntactyx/index.php.
Si ca vous dit de coder vos robots avec moi ou d'en faire un ensemble : moi ca me dit !! J'peux meme m'occuper de mettre la doc, notre code dans le wiki de façon à se que chacun puisse voir pour essayer de participer. Bref, peut-être un futur projet en commun. Allez, j'vous laisse. Un programmeur qui aime bien les armes..
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
Perfect Slayer

Profil challenge

Classement : 3031/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #1 le: 02 Novembre 2005 à 09:32:42 »

Bon et bah comme je suis en train de me doccumenter à fond sur le sujet, j'vous lache quelques petites idées des choses que peuvent faire les bots :
marcher (heureusement)
courir (avec une barre d'énergie)
ramper (et meme marcher en rampant)
voir
ecouter (les tirs, les autres robots)
tourner la tete (pour mieu voir)
tourner le tron (pour tirer **orthographe !** de là ou tu cours)
se pencher en avant, en arriere (pour prendre en compte le tir des grenades)
ils peuvent courir en arrière, ils ont une armure, les balles ne vont pas à la meme vitesse que le robot cour, marche etc.. j'trouve ca vraiment super comme truc moi ! :oops

EDIT : j'avais oublié.. ils peuvent se parler et se préter des objets..
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
comtezero

Profil challenge

Classement : 2131/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1001


Voir le profil WWW
« #2 le: 02 Novembre 2005 à 09:38:34 »

Moi ca m'interesserais beaucoup comme activitée seul hic c'est pas un truc pour moi j'ai pas le niveau :oops
Journalisée

·´¯`·­»Comtezero«­·´¯`·

http://www.masstek.org
Perfect Slayer

Profil challenge

Classement : 3031/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #3 le: 02 Novembre 2005 à 09:39:51 »

Argh.. tu programmes un peu ou pas ?
t'as compris les grandes lignes du code présenté ci-dessus ?
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
comtezero

Profil challenge

Classement : 2131/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1001


Voir le profil WWW
« #4 le: 02 Novembre 2005 à 09:49:26 »

Oui j'ai compris ce qui est attendu, trouver l'astuce qui permettra au robot d'etre performant du point de vue du code et du robot en lui meme. J'ai programmé un peu en php mais j'avais arrété un peu c'est dur de s'y remettre au bahut en vb6 et j'ai 2-3 truc en c++.
Journalisée

·´¯`·­»Comtezero«­·´¯`·

http://www.masstek.org
Perfect Slayer

Profil challenge

Classement : 3031/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #5 le: 02 Novembre 2005 à 09:50:55 »

Bah écoute c'est comme tu le sens.. moi j'pense que j'vais commencer une page sur NC-Wiki à se propos.. tu verras mon code sera pas bien méchant (pour le moment ! ).. Ca te motivera peut-être

EDIT :

Bon bah voilà, j'ai fait qqpages sur le wiki de quoi présenter mes idées et mon bot. Bonne lecture
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
comtezero

Profil challenge

Classement : 2131/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1001


Voir le profil WWW
« #6 le: 02 Novembre 2005 à 10:44:48 »

(http://www.newbiecontest.org/wiki/lib/exe/fetch.php?w=100&h=&cache=cache&media=http%3A%2F%2Fmembres.lycos.fr%2Fxphoenix%2Fp_uriel.jpg)

Quake III PowwwA

Bon je lit ca et merci d'avoir mis en partage ton idée.
Journalisée

·´¯`·­»Comtezero«­·´¯`·

http://www.masstek.org
Perfect Slayer

Profil challenge

Classement : 3031/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #7 le: 02 Novembre 2005 à 11:06:35 »

Il est tres bien mon Uriel nan ? J'avais hésité avec Anarki sinon..
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
anycilkler
Profil challenge

Classement : 34947/55018

Membre Complet
***
Hors ligne Hors ligne
Messages: 127


Voir le profil
« #8 le: 02 Novembre 2005 à 21:29:38 »

j'aurais bien voulu voir a quoi sa ressemblait et tout et tout mais le site est en anglais
Journalisée
Perfect Slayer

Profil challenge

Classement : 3031/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #9 le: 03 Novembre 2005 à 16:25:10 »

Bah et alors ? Ca t'empèche de lire ?? Si jamais y a qqchose que tu ne comprends pas. Demande-le moi !
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
Nox
Profil challenge

non classé(e).

Membre Complet
***
Hors ligne Hors ligne
Messages: 142


Voir le profil
« #10 le: 03 Novembre 2005 à 18:01:44 »

ça a l'air bien symaptique ça me rappel robocode
Journalisée

<-< Nox | Kernox >->

www.Kernox.ze.cx
anycilkler
Profil challenge

Classement : 34947/55018

Membre Complet
***
Hors ligne Hors ligne
Messages: 127


Voir le profil
« #11 le: 03 Novembre 2005 à 18:27:53 »

Citation de: Perfect Slayer
Bah et alors ? Ca t'empèche de lire ?? Si jamais y a qqchose que tu ne comprends pas. Demande-le moi !
ben c'est a dire que pars yes et no je comprend rien en anglais donc sa facilite pas la documentation.
sinon j'ai des bases en C++ car en ce moment je suis en train d'apprendre les classes (donc la POO je crois mais pas sur)
Journalisée
Perfect Slayer

Profil challenge

Classement : 3031/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #12 le: 03 Novembre 2005 à 19:47:08 »

Les classes servent pour les objets / POO -> Programmation Orientée Objet


Je connais pas robotcode.. Décrit un peu (t'as l'air d'avoir connu).

Sinon pour l'instant, mon dernière match : 16VS16
J'ai perdu 0/7 (j'lui en ai baisé 9 !!! )
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
anycilkler
Profil challenge

Classement : 34947/55018

Membre Complet
***
Hors ligne Hors ligne
Messages: 127


Voir le profil
« #13 le: 03 Novembre 2005 à 19:53:07 »

bon allé perfect slayer je sens que tu va pondre un bon tuto en FRANçAIS pour aidé ceux qui veulent joué a ce jeux et qui ne comprenne pas l'anglais lol
Journalisée
comtezero

Profil challenge

Classement : 2131/55018

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1001


Voir le profil WWW
« #14 le: 03 Novembre 2005 à 19:55:08 »

Apprend l'anglais ca te servira plus souvent qu'une seule traduction.
Journalisée

·´¯`·­»Comtezero«­·´¯`·

http://www.masstek.org
Pages: [1] 2
  Imprimer  
 
Aller à: