begin process at 2010 07 29 16:08:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > PONG : DÉVELOPPEMENT

PONG : DÉVELOPPEMENT


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :jeux, pong, python, developpement Niveau :Débutant Date de création :06/07/2007 Date de mise à jour :11/07/2007 09:28:53 Vu / téléchargé :3 396 / 145

Auteur : aowhelios

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

L'idée est de faire un pong assez basique, avec une interface GUI sommaire.

Le développement pourra ensuite porter sur l'amélioration du jeux :
- choix des options (difficultés, niveau de l'IA...)
- possibilité de jouer à 2 joueurs sur le meme PC ou en réseau
- sauvegarde des meilleurs scores
- améliorations graphiques
...

Source

  • #!/usr/bin/python
  • # -*- coding: UTF-8 -*-
  • from Tkinter import *
  • from random import randint
  • class Fenetre(Tk):
  • def __init__(self, width=600, height=400):
  • Tk.__init__(self)
  • self.flag = 0
  • self.quit= Button(self,text="Quit Game",command=self.destroy)
  • self.quit.grid(column=4,row=0,sticky="NE")
  • self.new= Button(self,text="New Game",command=self.new_game)
  • self.new.grid(column=0,row=0,sticky="NW")
  • self.can = Canvas(self,width=width,height=height,bg="black")
  • self.can.grid(column=0,row=1,sticky="SW",columnspan=5)
  • def new_game(self):
  • if self.flag == 0 :
  • self.flag=1
  • self.pads = Pad(self.can,self.flag)
  • self.ball = Ball(self.can,self.pads,self.flag)
  • class Pad:
  • def __init__(self,canvas,flag):
  • self.canvas = canvas
  • self.flag = flag
  • self.height = canvas.winfo_height()
  • self.width = canvas.winfo_width()
  • self.x1,self.y1 = 10,self.height/2-30
  • self.x2,self.y2 = self.width-25,self.height/2-30
  • self.Pad1 = canvas.create_rectangle(self.x1,self.y1,self.x1+15,self.y1+60,fill="white")
  • self.Pad2 = canvas.create_rectangle(self.x2,self.y2,self.x2+15,self.y2+60,fill="white")
  • canvas.bind_all("<Up>",self.mouv_up)
  • canvas.bind_all("<Down>", self.mouv_down)
  • self.dy2 = 25
  • self.ia()
  • def mouv_up(self,event):
  • if self.y1>5 :
  • self.y1=self.y1-10
  • self.canvas.coords(self.Pad1,self.x1,self.y1,self.x1+15,self.y1+60)
  • def mouv_down(self,event):
  • if self.y1+60<(self.height-5):
  • self.y1=self.y1+10
  • self.canvas.coords(self.Pad1,self.x1,self.y1,self.x1+15,self.y1+60)
  • def ia (self):
  • self.y2=self.y2 + self.dy2
  • if self.y2+60 > self.height-10 :
  • self.dy2=-50
  • if self.y2 < 5 :
  • self.dy2=50
  • self.canvas.coords(self.Pad2,self.x2,self.y2,self.x2+15,self.y2+60)
  • if self.flag > 0:
  • self.canvas.after(70,self.ia)
  • class Ball:
  • def __init__(self,canvas,pad,flag):
  • self.canvas = canvas
  • self.pad = pad
  • self.height = canvas.winfo_height()
  • self.width = canvas.winfo_width()
  • self.flag = flag
  • self.x1,self.y1 = self.width/2,self.height/2
  • self.dx,self.dy = 30,30
  • self.Ball = canvas.create_oval(self.x1, self.y1, self.x1+25, self.y1+25, width=2, fill='white')
  • self.pointA, self.pointB = 0,0
  • self.ready()
  • def ready(self):
  • self.starter=0
  • self.score= Label(app,text="%d : %d" % (self.pointA,self.pointB), bg="black",fg="white")
  • self.score.grid(column =2,row=0,sticky="S")
  • self.x1,self.y1 = self.height/2,self.width/2
  • app.titre = Label(app,text="PRESS ANY KEY TO START", bg="black",fg="white")
  • app.titre.grid(column =2,row=2,sticky="S")
  • self.canvas.bind_all("<Key>",self.start)
  • def start(self,event):
  • self.starter=1
  • self.move()
  • def move(self):
  • if self.starter==1:
  • self.x1, self.y1 = self.x1 +self.dx, self.y1 + self.dy
  • if self.y1 >self.height-26:
  • self.dx, self.dy = self.dx, -20
  • if self.y1 <2:
  • self.dx, self.dy = self.dx, 20
  • if self.x1 < self.pad.x1+20:
  • if self.pad.y1 < self.y1 < self.pad.y1+60:
  • self.dx, self.dy = 20, self.dy
  • if self.x1+30 > self.pad.x2-1:
  • if self.pad.y2<self.y1+12.5<self.pad.y2+60:
  • self.dx, self.dy = -20, self.dy
  • if self.x1 < 0:
  • self.starter = 0
  • self.pointB = self.pointB+1
  • self.ready()
  • if self.x1+25 > self.width:
  • self.starter=0
  • self.pointA = self.pointA+1
  • self.ready()
  • self.canvas.coords(self.Ball,self.x1,self.y1,self.x1+30,self.y1+30)
  • if self.flag > 0:
  • self.canvas.after(70,self.move)
  • if __name__ == "__main__":
  • app = Fenetre()
  • app.mainloop()
#!/usr/bin/python
# -*- coding: UTF-8 -*-

from Tkinter import *
from random import randint

class Fenetre(Tk):
    def __init__(self, width=600, height=400):
        Tk.__init__(self)
        self.flag = 0
        
        self.quit= Button(self,text="Quit Game",command=self.destroy)
        self.quit.grid(column=4,row=0,sticky="NE")

        self.new= Button(self,text="New Game",command=self.new_game)
        self.new.grid(column=0,row=0,sticky="NW")

  
        self.can = Canvas(self,width=width,height=height,bg="black")
        self.can.grid(column=0,row=1,sticky="SW",columnspan=5)
             
    def new_game(self):
        if self.flag == 0 :
            self.flag=1
            self.pads = Pad(self.can,self.flag)
            self.ball = Ball(self.can,self.pads,self.flag)

class Pad:
    def __init__(self,canvas,flag):
        self.canvas = canvas
        self.flag = flag
        self.height = canvas.winfo_height()
        self.width = canvas.winfo_width()
        self.x1,self.y1 = 10,self.height/2-30
        self.x2,self.y2 = self.width-25,self.height/2-30
                
        self.Pad1 = canvas.create_rectangle(self.x1,self.y1,self.x1+15,self.y1+60,fill="white")
        self.Pad2 = canvas.create_rectangle(self.x2,self.y2,self.x2+15,self.y2+60,fill="white")

        canvas.bind_all("<Up>",self.mouv_up)
        canvas.bind_all("<Down>", self.mouv_down)
        self.dy2 = 25
        self.ia()

    def mouv_up(self,event):
        if self.y1>5 :
            self.y1=self.y1-10
            self.canvas.coords(self.Pad1,self.x1,self.y1,self.x1+15,self.y1+60)
            
    def mouv_down(self,event):
        if self.y1+60<(self.height-5):
            self.y1=self.y1+10
            self.canvas.coords(self.Pad1,self.x1,self.y1,self.x1+15,self.y1+60)

    def ia (self):
        self.y2=self.y2 + self.dy2
        if self.y2+60 > self.height-10 :
            self.dy2=-50
            
        if self.y2 < 5 :
            self.dy2=50
            
        self.canvas.coords(self.Pad2,self.x2,self.y2,self.x2+15,self.y2+60)
        if self.flag > 0:
            self.canvas.after(70,self.ia)


class Ball:
    def __init__(self,canvas,pad,flag):
        self.canvas = canvas
        self.pad = pad
        self.height = canvas.winfo_height()
        self.width = canvas.winfo_width()
        self.flag = flag
        self.x1,self.y1 = self.width/2,self.height/2
        self.dx,self.dy = 30,30
        self.Ball = canvas.create_oval(self.x1, self.y1, self.x1+25, self.y1+25, width=2, fill='white')
        self.pointA, self.pointB = 0,0
        
        self.ready()
    
    def ready(self):
        self.starter=0
        self.score= Label(app,text="%d : %d" % (self.pointA,self.pointB), bg="black",fg="white")
        self.score.grid(column =2,row=0,sticky="S")
        self.x1,self.y1 = self.height/2,self.width/2
        app.titre = Label(app,text="PRESS ANY KEY TO START", bg="black",fg="white")
        app.titre.grid(column =2,row=2,sticky="S")
        self.canvas.bind_all("<Key>",self.start)
       

    def start(self,event):
        self.starter=1
        self.move()  
        
    def move(self):
        if self.starter==1:
            self.x1, self.y1 = self.x1 +self.dx, self.y1 + self.dy
                 
            if self.y1 >self.height-26:
                self.dx, self.dy = self.dx, -20

            if self.y1 <2:
                self.dx, self.dy = self.dx, 20
       
            if self.x1 < self.pad.x1+20:
                if self.pad.y1 < self.y1 < self.pad.y1+60:
                    self.dx, self.dy = 20, self.dy

            if self.x1+30 >  self.pad.x2-1:
                if self.pad.y2<self.y1+12.5<self.pad.y2+60:
                     self.dx, self.dy = -20, self.dy

            if self.x1 < 0:
                self.starter = 0
                self.pointB = self.pointB+1
                self.ready()
            
        
            if self.x1+25 > self.width:
                self.starter=0
                self.pointA = self.pointA+1
                self.ready()

            self.canvas.coords(self.Ball,self.x1,self.y1,self.x1+30,self.y1+30)
            if self.flag > 0:
                self.canvas.after(70,self.move)

        


if __name__ == "__main__":
    app = Fenetre()
    app.mainloop()





 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

06 juillet 2007 15:35:18 :
v0.1
10 juillet 2007 14:45:54 :
v0.2
10 juillet 2007 17:42:40 :
v0.3
10 juillet 2007 17:43:23 :
v0.4
11 juillet 2007 09:28:53 :
v0.4

 Sources du même auteur

Source avec Zip QUIZZ DES CAPITALES SUR BASE DE DONNÉE

 Sources de la même categorie

Source avec Zip Source avec une capture CASSE BRIQUE par elnabo
Source avec Zip COMPTEBON.PY par ACONNES
Source avec Zip Source avec une capture JEU DU SERPENT ////\\\\ SNAKE par elnabo
Source avec Zip Source avec une capture LES CONTES DE MONTE CRYPTO par amaury74
Source avec Zip Source avec une capture UN CLASSIC SOKOBAN par blackgrimly

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [PYTHON] JEU DU PENDU par The_tito
Source avec Zip Source avec une capture EQUATION STANDARD DE LA DROITE par calogerogigante
SIMPLE COMPARATEUR IPV4 EN PYTHON par erebos
Source avec Zip Source avec une capture DEMO VYPTHON : SYSTEME À AGENTS AVEC LES ABEILLES par zorg724
Source avec Zip QUIZZ DES CAPITALES SUR BASE DE DONNÉE par aowhelios

Commentaires et avis

Commentaire de aowhelios le 06/07/2007 14:31:02

Si des personnes sont intéressés par le développement conjoint de ce Pong, il est peut être plus simple de communiquer par mail, et de publier le résultat ici, une fois le développement finalisé.
mon mail : aowhelios@hotmail.com

Commentaire de Epsilon012 le 12/07/2007 18:34:22

Il y a un grand effort pour ce que tu appelle IA, car en fait s'en est pas un je vois pas l'inteligence dans une variable qui augmente et qui diminue periodiquement ...

Commentaire de aowhelios le 18/07/2007 14:30:20

ahaha...C'est tout à fait provisoire, je ne me suis pas encore penché sur la question de l'IA, mais il fallait bien que le PAD de l'ordi fasse quelque chose en attendant qu'il devienne intelligent !

Commentaire de aera group le 30/07/2007 11:39:41

Bon, je crois que je vais essayer de m'intéresser à ce projet ! Pour l'intant, je ne propose pas de solutions, ni de codes, (je part en vacance jusque fin aout donc ....) mais je pense qu'il faudrait étudier quelques pistes de travail en priorité.

1/ Pour commencer, l'interface doit absolument évolué, il n'y a pas de détection de colision entre la boule et le pad (Je ne parle pas des graphismes, ça on véra à la fin ...) !!! cf http://www.pythonfrance.com/codes/COLLISIONS-CASCADES-PLUS-CENTAINE-BOULES-ENTRECHOQUENT_34844.aspx

2/ Laissons tomber l'AI pour le moment, il faut absolument amélioré la jouabilité. En effet, il y a un problème de détection des événements. En effect la méthode "bind" ne fonctionne pas bien : lorsque l'on reste appuyer sur la touche "monter", le pad démare doucement puis accélère (logique, faite un essayer sous Word ou autre : apuyer en continu sur la touche "a" et vous vérez les "a" s'ajouter de plus en plus vite).

3/ Pourquoi s'obstiner à vouloir parler anglais ;)

Commentaire de aera group le 30/07/2007 11:59:17

Utilisation de PyGame (?) : ftp://ftp-developpez.com/guigui/sources/OhMummy/OhMummy.pdf

Commentaire de aera group le 31/10/2007 14:29:03

Le code est mort ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Qu'est ce que le python permet de réaliser!! [ par Mansuz ] Mansuz Salut! J'aurais aimé savoir ce qui peut être réalisé en Python. Par exemple Flash  c'est les petites anims, des jeux funs. Le C pour fair des a affichage des images sur python [ par amina22 ] salut,je sais qu'on peut afficher les images .gif avec python mais je veux savoir si on peut afficher les images(jpeg,jpg,..)  et les vidéos si oui et charger un fichier avec python [ par amina22 ] salut,je suis débutante en python et je dois créer une interface  qui permet de télécharger un fichier quelconque et de l affichermes taches sont :1.c python [ par tattou_j ] Bonjour,Je suis entrain de travailler sur mon pfe, est ce que quelqu'un peut m'aider et m'envoyer des codes en python sur eclipse concernant l'envoi d Gestion de sessions en python [ par Cab2lhak ] Bonjour,Je dois réaliser un module de gestion de sessions en python pour un Framework. Mais je métrise pas bien le langage Python, pouvez vous m'aider existe -t-il un équivalent de la fonction "call" sous Python? [ par Veust ] Bonjour, je suis en train d'ecrire un code sous python qui d'une part doit rentrer des donner dans une liste(jusque là facile) et d'autre part créer u Python er Threads [ par dirthangel ] Salut a tous je suis programmeur perl, j'aimerais savoir si les threads en python sont stable ? car c'est un vraie problème en Perl merci !!! Note logiciel Python [ par Panthouffle ] Salut, je cherche un site Internet qui donne un avis des utilisateurs sur le logiciel Python, une note de la part des utilisateurs pour un travail en Script Python pour html [ par aera group ] Bonjour, je uis actuelement au chapitre 17 du tutoriel de Gérard Swinnen : Apprendre à programmer avec Python (téléchargable sur http://www.cifen.ulg.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales