Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > GUI
GUI Forum d'entraide sur les bibliothèques pour interfaces graphiques en Python
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/08/2010, 22h28   #41
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
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 ...
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2010, 17h37   #42
afranck64
Membre Expert
 
Avatar de afranck64
 
Homme Franck Awounang N.
Étudiant
Inscription : janvier 2009
Messages : 587
Détails du profil
Informations personnelles :
Nom : Homme Franck Awounang N.
Âge : 21
Localisation : Autre

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

Informations forums :
Inscription : janvier 2009
Messages : 587
Points : 1 025
Points : 1 025
Envoyer un message via Yahoo à afranck64
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)
afranck64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 00h59   #43
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
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.
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 20h52   #44
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
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 ?
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2010, 20h45   #45
afranck64
Membre Expert
 
Avatar de afranck64
 
Homme Franck Awounang N.
Étudiant
Inscription : janvier 2009
Messages : 587
Détails du profil
Informations personnelles :
Nom : Homme Franck Awounang N.
Âge : 21
Localisation : Autre

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

Informations forums :
Inscription : janvier 2009
Messages : 587
Points : 1 025
Points : 1 025
Envoyer un message via Yahoo à afranck64
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
afranck64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2010, 21h01   #46
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
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

josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2010, 19h03   #47
afranck64
Membre Expert
 
Avatar de afranck64
 
Homme Franck Awounang N.
Étudiant
Inscription : janvier 2009
Messages : 587
Détails du profil
Informations personnelles :
Nom : Homme Franck Awounang N.
Âge : 21
Localisation : Autre

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

Informations forums :
Inscription : janvier 2009
Messages : 587
Points : 1 025
Points : 1 025
Envoyer un message via Yahoo à afranck64
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!
afranck64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2010, 08h52   #48
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
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
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2010, 12h07   #49
afranck64
Membre Expert
 
Avatar de afranck64
 
Homme Franck Awounang N.
Étudiant
Inscription : janvier 2009
Messages : 587
Détails du profil
Informations personnelles :
Nom : Homme Franck Awounang N.
Âge : 21
Localisation : Autre

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

Informations forums :
Inscription : janvier 2009
Messages : 587
Points : 1 025
Points : 1 025
Envoyer un message via Yahoo à afranck64
Salut ,

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

a plus.
afranck64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2010, 07h48   #50
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
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
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2010, 17h03   #51
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
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))
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2010, 08h33   #52
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
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
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 17h17   #53
jack-ft
Membre Expert
 
Inscription : avril 2008
Messages : 800
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 800
Points : 1 809
Points : 1 809
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(
jack-ft est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h45.


 
 
 
 
Partenaires

Hébergement Web