JeuWeb - Crée ton jeu par navigateur
Par quoi commencer ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Débuter et gérer son projet (https://jeuweb.org/forumdisplay.php?fid=60)
+--- Sujet : Par quoi commencer ? (/showthread.php?tid=3263)

Pages : 1 2 3 4 5


RE: Par quoi commencer? - Melimelo - 09-11-2008

Qui determine les actions possible plustôt je dirais ...


RE: Par quoi commencer? - tghpow - 09-11-2008

Okay.
Je viens de regarder un tuto sur le sdz qui parle du Javascript et des objets.
Donc par exemple pour crée les valeurs d'une unités je ferai:

function creer_unité(nom,attaque,defense)
{
this.nom = nom;
this.attaque= attaque;
this.defense=defense;
}

var lancier = new creer_unité('lancier','20',13);
var gobelins = new creer_unité('gobelins','12',15);

C'est quelques chose comme ca?
(je commence tous juste a apprendre les objets en JS)


RE: Par quoi commencer? - Sephi-Chan - 09-11-2008

Il ne s'agit absolument pas de Javascript : c'est un langage exécuté côté client !
Dans ton cas, c'est la partir serveur qui est concernée, donc en PHP (ou autre langage serveur).


Sephi-Chan


RE: Par quoi commencer ? - tghpow - 09-11-2008

A okay. Donc vaut mieux que j'arrete d'apprendre le Javascript alorsSmile
Seul probleme je trouve peu de tuto sur les POO en php (y'en a quelques un dans le wiki de jeuweb mais j'aimerais d'abord apprendre les bases).


Mais faut il vraimment pratiquer le POO si je veux donner des valeurs aux unités.etc?


RE: Par quoi commencer ? - Sephi-Chan - 09-11-2008

Pourtant, c'est pas ça qui manque, que ce soit sur JeuWeb ou sur le Web tout court.

Mais la POO, c'est pas en lisant que tu apprendras. Il faut que tu fasses des essais en te basant sur les exemples donnés dans les articles (JeuWeb - Introduction à la POO), puis qu'en même temps tu lises la documentation PHP - Les classes et les objets (PHP 5). Cela te permettra de faire tes armes, apprendre à déclarer et utiliser une classe, etc.

Tu devrais arriver à créer des classes adaptées à ton jeu sans trop de difficultés. Et si tu as des questions un peu plus précises sur la façon de faire telle ou telle chose, tu peux ouvrir un sujet sur le forum. Smile


Sephi-Chan


RE: Par quoi commencer ? - tghpow - 09-11-2008

Citation :Pourtant, c'est pas ça qui manque, que ce soit sur JeuWeb ou sur le Web tout court.
En effet je viens de trouver un bon tuto sur: http://www.phpdebutant.org/article42.php

Je comprend un peu mieux maintenant.
Je vais donc commencer (dîtes moi si je me trompe) par crée les caracteristiques de mes unités:
Le prix, attaque..etc
Ensuite je chercherai un moyen pour faire les attaques des unités..etc, le fait de créer des untiés (ou autres) avec les batiments.

Merci pour votre aide!

ps: Par contre php.net c'est bien, mais là la page est en AnglaisSmile J'y comprend pas un mot :xd


RE: Par quoi commencer ? - Eluox - 09-11-2008

C'est dur pour un développeur de pas parler anglais ^^

La POO, c'est bien Big Grin


RE: Par quoi commencer ? - tghpow - 09-11-2008

Oui je sais:heuuu: mais bon j'y peut rien, y'en qui sont doués en langues moi non:pleure2:

J'ai essayé ca rapidement, mais je crois que j'ai tous confondu..:

Code PHP :
<?php
session_start
();


class
unite ($nom_unite){

public
$attaque;
public
$defense_infanterie;
public
$defense_cavalerie;
public
$vitesse;
public
$butin;
}

new
unite (lancier) {

$this->$attaque= 20;
$this->$defense_infanterie = 30;
$this->$defense_cavalerie = 80;
$this->$vitesse = 24;
$this->$butin = 50;

}

?>



RE: Par quoi commencer ? - Sephi-Chan - 09-11-2008

j'ai regardé un peu ton projet, je peux voir que tu as plusieurs unités, que celles-ci ont des caractéristiques communes, etc.

On peut donc imaginer une classe générique Unite que l'on n'utilisera pas directement, ce sont d'autres classes (Cavalier, Soldat, etc.) qui hériteront de la classe Unite.
Code PHP :
<?php 
/**
* Contient les attributs et les méthodes communes à toutes les unités du jeu.
*/
abstract class Unite {

/**
* Identifiant de la case sur laquelle est positionnée l'unité.
* (On pourrait également imaginer que la position soit un objet Case.)
*/
protected $_position;

/**
* Niveau de vie de l'unité.
*/
protected $_sante;

/**
* Score d'attaque de l'unité.
*/
protected $_attaque;

/**
* Score de défense de l'unité contre les différents types d'unités.
* Comme il y a plusieurs types d'unités, on utilise un tableau avec des
* clés comme $defense['cavalier'] ou $defense['fantassin'].
*/
protected $_defense = array();

/**
* Vitesse de déplacement de l'unité.
*/
protected $_vitesseDeplacement;

/**
* Quantité de ressource que l'unité peut transporter.
* Comme certaines ressources sont plus encombrantes que d'autres,
* on utilise un tableau avec plusieurs clés, comme $capaciteTransport['or']
* ou $capaciteTransport['bois'].
*/
protected $_capaciteTransport = array();


/**
* Déplace l'unité selon une direction donnée.
*/
public function bouger($direction){

/**
* Ce qu'il faut faire quand on bouge.
*/

}


/**
* On définit maintenant les accesseurs afin de respecter l'encapsulation
* des données (private, protected, public).
*/

public function getPosition(){
return
$this->_position;
}

public function
setPosition($position){
$this->_position = $position;
}


public function
getSante(){
return
$this->_sante;
}

public function
setSante($sante){
$this->_sante = $sante;
}


public function
getAttaque(){
return
$this->_attaque;
}

public function
setAttaque($attaque){
$this->_attaque = $attaque;
}


public function
getDefense($type){

if(
array_key_exists($type, $this->_defense) === true){
$defense = $this->_defense[$type];
}
else {
$defense = 0;
}

return
$defense;

}

public function
setDefense($type, $defense){
$this->_defense[$type] = $defense;
}


public function
getVitesseDeplacement(){
return
$this->_vitesseDeplacement;
}

public function
setVitesseDeplacement($vitesseDeplacement){
$this->_vitesseDeplacement = $vitesseDeplacement;
}


public function
getCapaciteTransport($type){

if(
array_key_exists($type, $this->_capaciteTransport) === true){
$capaciteTransport = $this->_capaciteTransport[$type];
}
else {
$capaciteTransport = 0;
}

return
$capaciteTransport;

}

public function
SetCapaciteTransport($type, $capacite){
$this-> _capaciteTransport[$type] = $capacite;
}

}

Ensuite, tu peux avoir des classes comme Cavalier ou Fantassin qui héritent de cette classe générique.
Code PHP :
<?php 
class Soldat extends Unite {

/**
* Attaque la cible indiquée (qui est un objet Cavalier, Soldat, etc.).
*/
public function attaquer($cible){

/**
* Procédure d'attaque.
* On peut imaginer qu'on utilise le score d'attaque de l'attaquant
* contenu dans $this->_attaque et qu'on le compare au score de défense
* qu'a la cible contre les fantassins contenu dans $cible->getDefense('fantassin').
*/

}

}


Enfin voilà, c'est une piste. Smile J'écrirais peut-être un article sur le sujet (j'suis bien parti…). Tu devrais comprendre ce code à l'aide des liens donnés précédemment.


Sephi-Chan


RE: Par quoi commencer ? - tghpow - 09-11-2008

Bien merci, la piste est plutôt bonneSmile
Ce soir je suis un peu fatigué et je comprend jamais du 1er coupSmile
Mais j'ai compris ce que tu voulais faire.
Merci beaucoup.
Cette nuit, je vais cogiter tous ca, et demain j'aurai surement acquis le principale.

Peux tu m'expliquer:
abstract
et
protected

Je n'ai pas encore vu ces "choses" :xd
Juste une remarque, tu as décalé tes commentaires.
ex: tu met les commentaires sur le vitesse de l'unité au lieu de la defense (relis ton script tu me comprendra surement).
une autre petite faute (enfin je crois) ici:
public function getVitesseDeplacement(){
return $thid->_vitesseDeplacement;
}

c'est plutôt thiS que thiD non?

Et je pense qu'un tuto là dessus serai trés apprecié des gens comme moi:respect: