Bonjour à tous, voila, j'aimerai faire une casse-brick en pygame mais j'ai un petit problème, je ne sais pas comment faire en sorte que la balle réagise toute seul, ce qui inclut le déplacement de la balle, les collisions avec le mur/ et la barre principale
Voici le début de mon code:
import pygame
from pygame.locals import *
from random import *
from math import *
pygame.init()
pygame.key.set_repeat(450,10)
fenetre = pygame.display.set_mode((640,480))
fond = pygame.image.load("fond_tfe.jpg")
fenetre.blit(fond, (0,0))
bp = pygame.image.load("barre_princi.jpg").convert_alpha()
pbp = bp.get_rect()
pbp = pbp.move(265,450)
fenetre.blit(bp, pbp)
ball = pygame.image.load("ball.png").convert_alpha()
pball = ball.get_rect()
pball = pball.move(315,431)
pygame.display.flip()
continuer = 1
x = 0
k = 250
while continuer:
for event in pygame.event.get():
if event.type == QUIT:
continuer = 0
if event.type == KEYDOWN:
if k > 0 :
if event.key == K_LEFT:
x = x - 10
pbp = pbp.move(x,0)
x = 0
k = k - 10
if k < 500 :
if event.key == K_RIGHT:
x = x + 10
pbp = pbp.move(x,0)
x = 0
k = k + 10
fenetre.blit(fond, (0,0))
fenetre.blit(bp, pbp)
fenetre.blit(ball,pball)
pygame.display.flip()
J'ai trouvé tout ceci via ce site même mais j'ai beau cherché sur Google, je ne trouve pas (enfin si mais avec des def/class et ce n'est pas vraiment mon fort =p)
Moi je commencerai pas mettre mon code dans les balises prévues à cet effet, ce sera tout de suite plus simple pour les Zéros de te relire et donc de pouvoir t'aider.
J'ai trouvé tout ceci via ce site même mais j'ai beau cherché sur Google, je ne trouve pas (enfin si mais avec des def/class et ce n'est pas vraiment mon fort =p)
Salut.
Bon d'abord, je suis obligé de faire mon flic : Les balises code SCRONGNONGNON ! C'pas que pour les lamas !
Il suffit d'encadrer ton code dans ton premier post avec :
<code type="python">
… ton code ici …
</code>
Merci d'éditer ton premier post pour y remédier au plus vite.
Bien, maintenant que ça c'est posé… Je rejoins l'avis des autres : si tu ne sais pas encore programmer « avec des def/class », il est encore trop tôt pour te lancer dans un casse-brique. Savoir organiser son code en fonctions et en classes est indispensable pour ne pas s'y perdre. Je t'encourage donc à suivre plus en profondeur le tutoriel Python de ce site avant de passer à ce genre de petits projets (en soi, c'est un jeu très simple à coder, mais seulement une fois les bases acquises).
Je sais programmer avec les def/class c'est juste que je ne suis pas spécialement à l'aise avec celà =)
ben c'est le moment de s'y mettre alors
une structure de ce type serait pas mal je pense ...
class palet
update:
déplacer en fonction des events clavier
class balle
update:
avancer
si touche objet => rebond
si objet touché == brick ==> supprimer brick
class brick
mainloop:
palet.update
balle.update
si balle sort du cadre etc ...
etc ...
@drevils : ce qu'on essaye de t'expliquer, c'est qu'un jeu n'est pas juste un script. Le fait de programmer « avec des def/class », comme tu dis, est d'une importance capitale puisque sans ça, ton code n'est pas organisé, pas modulaire (pas facile à modifier/faire évoluer/corriger), et tout simplement pas conçu.
Il faut bien différentier le fait d'utiliser Python pour faire des petits scripts utilitaires d'un côté (un script étant par définition officieuse un bout de programme codé de manière rapide et sale pour effectuer une même opération complexe un nombre indéterminé de fois), et le fait de créer de vrais programmes avec, qui demandent une phase de conception et une bonne dose d'organisation. Ton casse-brique rentre dans la seconde catégorie, et ce n'est pas juste pour t'emmerder que l'on te dit de t'y coller en créant des fonctions et/ou des classes : c'est juste indispensable.
Par ailleurs, je pense qu'il serait bon de créer un topic d'exercice/miniprojet sur le casse-brique, en détaillant bien les diverses étapes de la création du jeu, (en insistant sur l'aspect orienté objet, autant que possible, comme je me souviens de l'avoir fait pour le démineur). Ça aiderait en premier lieu l'ami drevils, mais aussi un bon nombre de débutants (on a déjà une série de sujets d'exos qui sont des jeux avec pygame, m'enfin le casse-brique est un sujet assez simple, et tellement "classique", que ce serait dommage de s'en passer ).
Là aujourd'hui je n'ai pas beaucoup de temps, mais si j'arrive à me débloquer une heure ou deux ce soir, je le ferai (si personne ne s'est porté volontaire d'ici là — bizoo josmiley —).
@Nohar:un casse brique c'est loin d'être très simple si tu veux faire un truc correct.;)
Perso, seuls deux points me paraissent « sensibles » (pas compliqués, mais à réfléchir) :
- modifier la trajectoire de la balle en fonction de l'abscisse du point de collision entre la balle et le palet, par rapport au centre du palet ;
- gérer les collisions intelligemment. S'il y a 50 briques et une seule balle, il n'est pas utile de tester les collisions entre la balle et toutes les briques à la fois.
À partir de là, il est possible d'avoir un casse-brique à peu près agréable à jouer. Bien sûr, après, si on veut rendre le jeu intéressant, il faut créer un level-editor, des briques de types différents, des bonus/malus, des animations, etc. mais le principe de base reste très simple.
Je ne le prend absolument pas mal =) Je suis dans une école d'informatique en secondaire et pour notre TFE nous devons pouvoir faire un programme, comme un casse-brick, le jeu pong, donkey-kong quand il lance des tonneaux et que mario doit arriver tout en haut de la map pour sauver la princesse etc et j'ai choisis casse-brick comme sujet, la programmation n'est pas mon fort et j'ai d'abord du rédiger un document avec les divers points à faire pour réaliser mon programme, ainsi que ce qu'il devrait faire et ce qu'il ne devrait pas, un cahier des charges en quelque sorte =)
Hum, la collision balle-brique je t'assure qu'un débutant ne la fera pas.
J'ai testé le sujet il y a peu, c'est loin d'être simple(facile).
clair, je suis entrain d'un refaire un (ci-dessus en attendant que qq1 décide de créer le sujet ^^), c'est vraiment pas du niveau débutant ...
Python c'est bon, mangez-en.
[A supprimer]
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.