bon ben je le met ici alors....

Programmation avancée de jeux en PureBasic
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

bon ben je le met ici alors....

Message par chikun »

:wink: Beauregard

A tous g pas envie dle terminer car ça engendre d'autres idées :roll:
utiliser la sourie, un code genere au hasard un angle au depart, LAISSEZ TOMBER LA BALLE POUR VOIR D'AUTRE ANGLE MARANT

Code : Tout sélectionner



;@ Chikun ; Casbrik!

ecranx = GetSystemMetrics_(#SM_CXSCREEN) ;1280
ecrany = GetSystemMetrics_(#SM_CYSCREEN) ;800
InitSprite() : InitKeyboard() : InitMouse()

OpenScreen (ecranx, ecrany, 32, "casbrik")

Structure objet
    x.f
    y.f 
    coul.l 
    ang.f
    dt.f
    gravite.f
    vitesse.f 
    vectx.f
    vecty.f   
EndStructure 

Structure target
x.w
y.w
EndStructure

Enumeration
#fond 
#racket
#balle
#target
EndEnumeration

Dim objet.objet(4)

CreateSprite(#fond,EcranX,EcranY)
StartDrawing(SpriteOutput(#fond))
  Box(0,0,EcranX,EcranY,RGB(0,0,0))
StopDrawing()
 
CreateSprite(#racket,100,2)
StartDrawing(SpriteOutput(#racket))
  Box(0,0,100,2,RGB(255,255,255))
StopDrawing()
 
objet(#balle)\coul=RGB(10,157,32)
CreateSprite( #balle,32,32)
StartDrawing(SpriteOutput(#balle))
  Circle(16, 16, 16, objet(#balle)\coul)
StopDrawing() 

objet(#target)\coul=RGB(3,1,250)
CreateSprite( #target,32,32)
StartDrawing(SpriteOutput(#target))
  Box(0,0,16, 16, objet(#target)\coul)
StopDrawing() 

Dim target.target(150)


deb:
objet(#balle)\x=ecranx/2
objet(#balle)\y=ecrany/2
objet(#balle)\vitesse=99
objet(#balle)\ang=Random(360)+45*#PI/180
objet(#balle)\dt=0.2
objet(#balle)\gravite=9.8

objet(#balle)\vectx=objet(#balle)\vitesse*Cos(objet(#balle)\ang)
objet(#balle)\vecty=-objet(#balle)\vitesse*Sin(objet(#balle)\ang)

objet(#racket)\y=750

rec:
For i=1 To 150
target(i)\x=Random(ecranx-100)
target(i)\y=Random(ecrany-(16*40))
For j=1 To i-1
If target(i)\x=target(i-j) : Goto rec
EndIf
Next j
Next i

;*******************

Repeat
ExamineKeyboard()
ExamineMouse()

objet(#racket)\x=MouseX()

If objet(#racket)\x>1180 : objet(#racket)\x=1180 : EndIf
If objet(#racket)\x<0 : objet(#racket)\x=0 : EndIf

objet(#balle)\vecty=objet(#balle)\vecty+objet(#balle)\gravite*objet(#balle)\dt    

objet(#balle)\x=objet(#balle)\x+objet(#balle)\vectx*objet(#balle)\dt
objet(#balle)\y=objet(#balle)\y+objet(#balle)\vecty*objet(#balle)\dt
   
       
If objet(#balle)\x> EcranX-34 Or objet(#balle)\x<0
    objet(#balle)\vectx=-objet(#balle)\vectx : objet(#balle)\gravite=-objet(#balle)\gravite
EndIf    
If objet(#balle)\y<0 
    objet(#balle)\vecty=-objet(#balle)\vecty 
EndIf
If SpritePixelCollision(#balle,objet(#balle)\x,objet(#balle)\y,#racket,objet(#racket)\x,objet(#racket)\y)
    objet(#balle)\vecty=-objet(#balle)\vecty : 
EndIf
  
If objet(#balle)\y>750 : Delay(1000) : Goto deb
EndIf
 
StartDrawing(ScreenOutput())
    DrawText(0,0,"@ Chikun",RGB(125,90,30),RGB(0,0,0))
    Line(objet(#racket)\x,objet(#racket)\y,100,00,objet(#racket)\coul)
StopDrawing() 
   
DisplayTransparentSprite(#balle,objet(#balle)\x,objet(#balle)\y)
 
For i=1 To 150
If SpritePixelCollision(#target,target(i)\x,target(i)\y,#balle,objet(#balle)\x,objet(#balle)\y)
    objet(#balle)\vectx=-objet(#balle)\vectx : objet(#balle)\vecty=-objet(#balle)\vecty 
    target(i)\x=ecranx+32 : target(i)\y=ecrany+32
EndIf
DisplayTransparentSprite(#target,target(i)\x,target(i)\y)
Next i

DisplayTransparentSprite(#racket,objet(#racket)\x,objet(#racket)\y)
FlipBuffers()
DisplaySprite(#fond,0,0)

;Delay(1)

Until KeyboardPushed(#PB_Key_Escape)

End

Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Salut Chikun,

Le code est propre. Il y a deux soucis: la hauteur de la raquette (elle n'est pas visible chez moi...) et la vitesse: c'est trop rapide.

Ollivier
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message par chikun »

Ollivier:

vitesse trop élevé!? , ESSAYE çA :( ligne 66) objet(#balle)\dt=0.1

objet(#balle)\vitesse=99 < ça évitez d'y toucher car diminuer de trop et la balle fini son rebond en bas et c la fin

racket trop bas!? DIMINUE çA: objet(#racket)\y=750 (ligne 72)

Je sais que tu sais tout cela , c pour m'apprendre à y faire gaffe c ça !? :wink: Dobro m'en aurai fait part toute façon, car c pour cela kil tiens à ce qu'on reste dans un contexte de :

ecranx = GetSystemMetrics_(#SM_CXSCREEN)
ecrany = GetSystemMetrics_(#SM_CYSCREEN)

ah! Ollivier :
Le code est propre...
:oops: merci 8)
Répondre