Nouveau sur le forum et projet

Programmation avancée de jeux en PureBasic
umbrella
Messages : 9
Inscription : mar. 28/déc./2004 18:24

Nouveau sur le forum et projet

Message par umbrella »

Voila bonjour je debute en purebasic, j'ai déjà appris les bases, fais un pong 2d pour 2 joueur et contre l'ordinateur (qui ets imbattable) et je voudrais mtn faire un pong online !

Mais je ne sais pas comment gerer du tout ! j'arrive a crée une connexion entre un client et un serveur et à faire un transfert de fichier, de string mais je ne sais pas du tout comment faire pour deplacer la raquette !

Envoyé une variable de la position Y de la raquette à l'autre joueur ? enfin si quelqu'un sait m'éclairé ca serait cool :)

Merci d'avance
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

j'ai pas encore essayer de faire un jeu a 2 via reseau ! mais je pense que tu as tout a fait raison en passant l'information de la coordonnée Y !
Il faut juste que le rafraichissement de cette variable sois sufisament rapide pour donner l'impression que c'est quelqu'un qui joue sur la même machine.
umbrella
Messages : 9
Inscription : mar. 28/déc./2004 18:24

Message par umbrella »

dite socmment onf ais pour envoyer plusieurs données d'un coup ? et les lires de l'autre côté ? j'arrive avec 1 ms avec 2 j'arrive pas ! :s si quelqu'un pourrait m'aidé :s
hackotedelaplaque
Messages : 121
Inscription : mer. 21/janv./2004 22:18

Message par hackotedelaplaque »

J'ai réussi à faire un PONG avec CPU battable.

En fait je crée une variable globale faute qui est aléatoire entre 0 et 10.
Elle va définir le nombre d'échanges à partir duquel l'ordi va se planter et rater la balle.

La raquette de l'ordi suit toujours la même ordonnée que la balle (et du coup ne laisse rien passer, sauf quand le nombre d'échanges équivaut à la variable faute. Là je la décale légèrement sa raquette pourqu'il puisse laisser passer la balle.

Du coup l'ordi plante, mais pas toujours au bout du même nombre d'échange, c'est plus agréable.
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
umbrella
Messages : 9
Inscription : mar. 28/déc./2004 18:24

Message par umbrella »

oui ca je sais faire mais le problème c'est le online enfait (je debute a fond ds le online) en m'inspirant des codes examples j'essaye de faire simplement 2 carrée que le client et que le serveur déplace online !

le client envoie
SendNetworkData(ConnectionID,Str(joueurs(1)\X),10)

au serveur je met ca :

buffer = AllocateMemory(0,1000,0)

et ceci dans les évenements de la boucle

ReceiveNetworkData(ClientID,buffer,1000)
posx = Val(PeekS(buffer))
joueurs(1)\X = posx

je vois la position X du carré du client bougé chez le serveur mais je ne sais pas comment faire pour la position Y :s

Help :?:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

dite socmment onf ais pour envoyer plusieurs données d'un coup ? et les lires de l'autre côté ?
pourquoi n'envoie tu pas les différents paramètres dans une même chaine de caractère avec un caractère de séparation ?

Genre
Coordonnée Y/age du capitaine/vitesse du vent/etc/

ensuite il te suffit de redecoupé la chaine pour recupérer tes valeurs !
Et pour redecouper ça doit pas être tres compliqué ! tu recherches le caractère de séparation pour connaitre mes coordonnées dans la chaine
Qu'en penses tu ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

surtout qu'en purebasic une commande existe pour faire ça !!

Code : Tout sélectionner

 Resultat$ = StringField(Chaine$, Index, Delimiteur$)  
:D
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Il te suffit de faire un truc dans le genre :

Code : Tout sélectionner

SendNetworkString(ServeurID, Str(joueurs(1)\X)+"|"+Str(joueurs(1)\Y))
;---------
*Buffer = AllocateMemory(1024)
ReceiveNetworkData(ClientID, *Buffer, 1024)
Coordonnees.s = PeekS(*Buffer)
Delimiteur = FindString(Coordonnees, "|", 0)
X = Val(Left(Coordonnees, Delimiteur))
Y = Val(Right(Coordonnees, Len(Coordonnees)-Delimiteur))
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
umbrella
Messages : 9
Inscription : mar. 28/déc./2004 18:24

Message par umbrella »

Merci pour toutes vos réponses ! jv regarder ca de plus près ;)
umbrella
Messages : 9
Inscription : mar. 28/déc./2004 18:24

Message par umbrella »

Me revoila ! alors le projet a bien avancé :D !
J'ai opté pour une autre solution :

exemple :
quand le server appuie sur une touche, il envoie une string aux client, les string sont "Z","S","Q","D" et en fonction de cela, le sprite du client monte si il recoit "Z",descend si il recoit "S",...

Mais j'ai un gros problème ! quand je lance mon server et mon client sur mon ordi ca fonctionne parfaitement mais dès que j'envoie le client à quelqu'un d'autre, ca ne va plus, je vois bougé le client mais lui ne voit rien ! Est-ce que c'est possible que ca soit pcq je suis en réseau avec plusieurs ordinateurs ?

Enfin voila ! J'éspère que y a une solution :? !

Merci d'avance :D
Répondre