begin process at 2012 02 05 00:09:29
  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é :4 381 / 165

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 QUESTIONNAIRE par darkanghel91
Source avec Zip Source avec une capture JEU DU PLUS OU MOINS par Iphonemax
TAQUIN 4*4 par fredericfabry
Source avec Zip Source avec une capture ASTRE2.0 CASSE-BRIQUES par Mints
Source avec Zip JEU DU NOMBRE MYSTERE EN PYTHON par messorama

 Sources en rapport avec celle ci

Source avec Zip TPYCODE, TRADUCTEUR DE CODE par jonathan33350
Source avec une capture JEU DU SERPENT (SNAKE) par zarash
Source avec Zip Source avec une capture TRIANGULATION par mecrosoft
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...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,669 sec (3)

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