Publicité
+ Répondre à la discussion
Page 3 sur 3 PremièrePremière 123
Affichage des résultats 41 à 53 sur 53
  1. #41
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 754
    Points : 793
    Points
    793

    Par défaut

    salut afranck64;

    j'avoue que "l'archer" ça ne m'a pas inspiré, je suis plutôt puzzle, désolé de ne pas avoir fait l'effort
    il me manque le module phy pour que ton code fonctionne chez moi.

    Pipes fonctionne plutôt bien, le path-mode est une bonne idée; et je vois que l'on fait de l'auto-promotion ^^

    à la place de l'archer j'ai fait un sokoban:



    http://joel-murielle.perso.sfr.fr/sokoban.tar

    et un samegame:



    http://joel-murielle.perso.sfr.fr/samegame.tar

    Si ça vous inspire ...

  2. #42
    Membre émérite
    Avatar de afranck64
    Homme Profil pro Franck Awounang N.
    Étudiant
    Inscrit en
    janvier 2009
    Messages
    590
    Détails du profil
    Informations personnelles :
    Nom : Homme Franck Awounang N.
    Âge : 23
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2009
    Messages : 590
    Points : 923
    Points
    923

    Par défaut

    Bonjour,

    @Joesmiley:
    C'était bien joué le personnage transparent. Il me faudra beaucoup de temps pour développer comme ça. Et le Samegame pour pouvoir faire cette compression des cases vides la va me falloir bosser dur.

    pour ce qui est du sokoban j'en ai déjà codé un bien qu'il soit en pascal et en mode console; bref si tu as une machine qui tourne sous Windows ou un compilateur pascal, voila le truc.

    Pièce jointe 65911

    pour ce qui est du samegame je risque mettre du temps avant de le coder j'ai un exam dans 2 semaines.

    Bon code et @+

    ps: le module phy est contenu dans le dossier data (Pipes)

  3. #43
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 754
    Points : 793
    Points
    793

    Par défaut

    re,
    j'ai une idée assez simple, mais j'y connais rien en socket ...
    j'aurais donc besoin d'un p'tit coup de main
    c'est un jeu de tir. 2 à 4 chars qui se poursuivent pour se tirer dessus et donc qui pourrait se jouer en réseau.
    voilà un premier brouillon;utilisez les flèches et la barre espace.
    http://joel-murielle.perso.sfr.fr/chars.zip

    le decors pourrait être détruit.
    c'est surtout histoire d'apprendre à utiliser les sockets.
    alors, que doit faire le serveur et que doit faire le client ?

    merci.

  4. #44
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 754
    Points : 793
    Points
    793

    Par défaut

    j'ai réfléchi, et j'ai dans l'idée que:
    -le serveur recolte l'état du clavier auprès de chaque client puis redistribut les infos
    -il attend ensuite que tous les clients se soient acquité de leur tâches.
    dans le principe, c'est bon ?

  5. #45
    Membre émérite
    Avatar de afranck64
    Homme Profil pro Franck Awounang N.
    Étudiant
    Inscrit en
    janvier 2009
    Messages
    590
    Détails du profil
    Informations personnelles :
    Nom : Homme Franck Awounang N.
    Âge : 23
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2009
    Messages : 590
    Points : 923
    Points
    923

    Par défaut

    Bonsoir Josmiley,
    ça fait un bail!

    bon pour le jeu je ne m'y connait pas très bien (du moins pour le moment en socket) mais tu devrais faire un serveur multithread sinon à chaque émission, il faudra attendre une réception alors tu devra avoir un Thread chargé de la réception des infos envoyées par les clients (mouvements,...) et un autre chargé de l'émission/re-émission des infos en direction des clients (nouvelle position des joueurs...) bien entendu les clients également devront être multithread.

    bon je vais un peu lire et je te fais signe

    @+ et bon code

  6. #46
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 754
    Points : 793
    Points
    793

    Par défaut

    salut afranck64,
    justement, pour rester synchro, je pense pas faire du multi-thread. Ainsi, un joueur n'ira pas plus vite qu'un autre si sa connection est plus rapide.

    bon, j'ai faim une maj du jeu, les flèches pour se déplacer, space pour tirer un obus, et left alt pour mitrailler.
    les 4 chars se déplacent en même temps ... jusqu' à ce que je pige les sockets.

    http://joel-murielle.perso.sfr.fr/chars.zip


  7. #47
    Membre émérite
    Avatar de afranck64
    Homme Profil pro Franck Awounang N.
    Étudiant
    Inscrit en
    janvier 2009
    Messages
    590
    Détails du profil
    Informations personnelles :
    Nom : Homme Franck Awounang N.
    Âge : 23
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2009
    Messages : 590
    Points : 923
    Points
    923

    Par défaut

    Salut,

    Je pense que tu ne m'as pas bien compris en fait le multi-threading c'est pour que les sockets ne se bloquent pas les uns les autres car la méthode socket.recv fait un sorte de mainloop jusqu'à ce que des informations soient reçuent... bref je documente encore

    @+ et bon code!

  8. #48
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 754
    Points : 793
    Points
    793

    Par défaut

    bon, allez !!
    faut faire quelque chose.
    je vais refaire un tetris, classique.
    sauf qu'au lieu de s'appuyer sur des matrices pour gerer le jeu, on va utiliser des rectangles et des images. Enfin, je vais essayer ...

    voilà un début de code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    from pygame import *
    from random import choice
     
    screen = display.set_mode((200,400))
    colors = 'red','royalblue','springgreen','yellow','khaki4'
     
    class Bg(Surface):
    	''
     
    	def __init__(self):
    		Surface.__init__(self,(240,420),SRCALPHA)
    		self.fill((0,0,0,255))
    		self.fill((0,0,0,0),(20,0,200,400))
    		self.mask = mask.from_surface(self)
     
    class Piece:
    	''
    	liste = ((0,),(0,1,1),(0,1,1)),((0,),(0,1,1),(0,1),(0,1)),((0,),(0,0,1),(0,1,1,1)),((0,),(0,1,1),(1,1)),((0,),(1,1,1,1))
     
    	def __init__(self):
    		piece = choice(Piece.liste)
    		self.surface = Surface((80,80),SRCALPHA)
    		color = Color(choice(colors))
    		for y,i in enumerate(piece):
    			for x,j in enumerate(i):
    				if j:self.surface.fill(color,(x*20,y*20,20,20))
    		self.surface = transform.rotate(transform.flip(self.surface,choice((0,1)),0),choice((0,90,180,270)))
    		self.rect = self.surface.get_rect()
    		self.rect.topleft = 60,-80
    		self.mask = mask.from_surface(self.surface)
     
    	def update(self):
    		def test_move(x,y):
    			if not bg.mask.overlap(self.mask,(self.rect.left+x+20,self.rect.top+y)): return 1
    		def test_rot():
    			if not bg.mask.overlap(mask.from_surface(transform.rotate(self.surface,90)),(self.rect.left+20,self.rect.top)): return 1
    		while True:
    			ev = event.wait()
    			if ev.type == USEREVENT or (ev.type == KEYDOWN and ev.key in (K_DOWN,K_LEFT,K_RIGHT,K_UP)):
    				if ev.type == USEREVENT or ev.key == K_DOWN:
    					if test_move(0,20): self.rect.top   += 20
    					else:
    						bg.blit(self.surface,(self.rect.left+20,self.rect.top))
    						bg.mask = mask.from_surface(bg)
    						break
    				elif ev.key == K_LEFT  and test_move(-20,0): self.rect.left  -= 20
    				elif ev.key == K_RIGHT and test_move(20,0 ): self.rect.right += 20
    				elif ev.key == K_UP    and test_rot():
    					self.surface = transform.rotate(self.surface,90)
    					self.mask    = mask.from_surface(self.surface)
    				screen.fill(0)
    				screen.blit(bg,(-20,0))
    				screen.blit(self.surface,self.rect)
    				display.flip()
    		return self.rect.top > -60
     
    time.set_timer(USEREVENT,300)
    key.set_repeat(50,50)
    bg = Bg()
    while Piece().update(): pass
    Misère, je ne pensais pas que ça serait aussi galère de na pas utiliser de matrice
    je dois trouver un moyen d'éliminer les lignes pleines

  9. #49
    Membre émérite
    Avatar de afranck64
    Homme Profil pro Franck Awounang N.
    Étudiant
    Inscrit en
    janvier 2009
    Messages
    590
    Détails du profil
    Informations personnelles :
    Nom : Homme Franck Awounang N.
    Âge : 23
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2009
    Messages : 590
    Points : 923
    Points
    923

    Par défaut

    Salut ,

    tu as finalement relance la discussion c est genial.
    Je vais voir ce que je peux faire comme Tetris avec Tkinter

    a plus.

  10. #50
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 754
    Points : 793
    Points
    793

    Par défaut

    re,
    j'ai mis un peu en standby.
    voilà, la chute des pièces accélère et ça compte les points; à améliorer.
    le ficher motif.png ici
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    from pygame import *
    from random import choice
     
    screen = display.set_mode((200,400))
    colors = 'red','royalblue','springgreen','yellow','khaki4'
    motif = image.load('motif.png')
    speed = 300
    pts = 0
     
    class Bg(Surface):
    	''
     
    	def __init__(self):
    		Surface.__init__(self,(240,500),SRCALPHA)
    		self.fill((0,0,0,255))
    		self.fill((0,0,0,0),(20,0,200,480))
    		self.mask = mask.from_surface(self)
     
    	def update(self):
    		global speed,pts
    		rmline = 0
    		for y in range(0,480,20):
    			if not (0,0,0,0) in [bg.get_at((x,y)) for x in range(20,220,20)]:
    				rmline += 1
    				screen.blit(bg,(0,y-80),(20,y,200,20))
    				display.flip();time.wait(200)
    				cp = bg.copy()
    				bg.fill((0,0,0,0),(20,0,200,y+20))
    				bg.blit(cp,(20,20),(20,0,200,y))
    				screen.fill(0)
    				screen.blit(bg,(-20,-80))
    				screen.blit(motif,(0,0))
    		self.mask = mask.from_surface(self)
    		if rmline:
    			event.clear()
    			speed -= 5
    			time.set_timer(USEREVENT,speed)
    			pts += rmline**2
    			display.set_caption('score: '+str(pts))
    		return rmline
     
    class Piece:
    	''
    	liste = ((0,),(0,1,1),(0,1,1)),((0,),(0,1,1),(0,1),(0,1)),((0,),(0,0,1),(0,1,1,1)),((0,),(0,1,1),(1,1)),((0,),(1,1,1,1))
     
    	def __init__(self):
    		self.surface = Surface((80,80),SRCALPHA)
    		color = Color(choice(colors))
    		for y,i in enumerate(choice(Piece.liste)):
    			for x,j in enumerate(i):
    				if j:self.surface.fill(color,(x*20,y*20,20,20))
    		self.surface = transform.rotate(transform.flip(self.surface,choice((0,1)),0),choice((0,90,180,270)))
    		self.rect = Rect(60,-80,80,80)
    		self.mask = mask.from_surface(self.surface)
     
    	def update(self):
    		def test_move(x,y):
    			if not bg.mask.overlap(self.mask,(self.rect.left+x+20,self.rect.top+y+80)): return 1
    		def test_rot():
    			if not bg.mask.overlap(mask.from_surface(transform.rotate(self.surface,90)),(self.rect.left+20,self.rect.top+80)): return 1
    		bgu = None
    		while True:
    			ev = event.wait()
    			if ev.type == USEREVENT or (ev.type == KEYDOWN and ev.key in (K_DOWN,K_LEFT,K_RIGHT,K_UP)):
    				if ev.type == USEREVENT or ev.key == K_DOWN:
    					if test_move(0,20): self.rect.top   += 20
    					else:
    						bg.blit(self.surface,(self.rect.left+20,self.rect.top+80))
    						bg.mask = mask.from_surface(bg)
    						break
    				elif ev.key == K_LEFT  and test_move(-20,0): self.rect.left  -= 20
    				elif ev.key == K_RIGHT and test_move( 20,0): self.rect.right += 20
    				elif ev.key == K_UP    and test_rot():
    					self.surface = transform.rotate(self.surface,90)
    					self.mask    = mask.from_surface(self.surface)
    				screen.fill(0)
    				screen.blit(bg,(-20,-80))
    				screen.blit(self.surface,self.rect)
    				screen.blit(motif,(0,0))
    				display.flip()
    				bgu = bg.update()
    		return self.rect.top > -60 or bgu
     
    display.set_caption('score: 0')
    time.set_timer(USEREVENT,speed)
    key.set_repeat(50,50)
    bg = Bg()
    while Piece().update(): pass

  11. #51
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 754
    Points : 793
    Points
    793

    Par défaut

    un passe-temps de quelques lignes ... un simple snake.
    http://joel-murielle.perso.sfr.fr/snake1.py
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    from pygame import*
    from random import choice
    screen=display.set_mode([225]*2)
    font.init()
    font=font.Font(font.get_default_font(),17)
    area=set(sum([range(i,i+15) for i in range(17,242,16)],[]))
    while event.wait().type != QUIT:
    	screen.blit(font.render('HIT SPACE TO (RE)START',1,(255,255,255)),(7,100))
    	display.flip()
    	screen.fill(0)
    	if key.get_pressed()[K_SPACE]:
    		_,direction,head=snake=[15,16,17]
    		apple=255
    		display.set_caption('snake length: 3')
    		while(snake.count(head)&1)*head%16*(head&240):
    			for e in event.get(2):direction=(-1,-16,16,1)[e.key&3]
    			event.clear()
    			snake=snake[apple!=head:]+[head+direction]
    			if apple==head:
    				apple=choice(list(area.difference(set(snake))))
    				display.set_caption('snake length: '+str(len(snake)))
    			screen.fill(0)
    			for i in[apple]+snake:
    				draw.ellipse(screen,Color(('brown3','azure','bisque4')[1 if i==snake[-1]else 0 if i==apple else 2]),((i-1)%16*15,(i-16)/16*15,15,15))
    			display.flip()
    			head=snake[-1]
    			time.wait(150-len(snake))

  12. #52
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 754
    Points : 793
    Points
    793

    Par défaut

    Un simple démineur.
    Gameplay classic, j'ai juste travaillé sur le flip des cases cliquées.
    http://joel-murielle.perso.sfr.fr/demineur.zip

  13. #53
    Membre Expert
    Inscrit en
    avril 2008
    Messages
    998
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 998
    Points : 2 192
    Points
    2 192

    Par défaut

    Citation Envoyé par josmiley Voir le message
    re,
    j'ai une idée assez simple, mais j'y connais rien en socket ...
    j'aurais donc besoin d'un p'tit coup de main
    c'est un jeu de tir. 2 à 4 chars qui se poursuivent pour se tirer dessus et donc qui pourrait se jouer en réseau.
    voilà un premier brouillon;utilisez les flèches et la barre espace.
    http://joel-murielle.perso.sfr.fr/chars.zip

    le decors pourrait être détruit.
    c'est surtout histoire d'apprendre à utiliser les sockets.
    alors, que doit faire le serveur et que doit faire le client ?

    merci.
    L'ancêtre de ce jeu en réseau était Xpilot

    )jack(

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •