Page 2 sur 4

Re: qui peux me donner quelques cours pour la création de je

Publié : mer. 25/janv./2012 19:41
par G-Rom
je sais que c'est une variable et je programme pas souvent faute de temps
Alors pourquoi programmer ? si tu n'as pas le temps , fait autre chose , plante des patates.
Je ne vais pas apprendre un truc complexe si je n'ai pas le temps de l’étudier correctement.
C'est comme ci j’apprenais le Chinois et que je m'accordait que 30 secondes de temps par jour pour apprendre ...
a ce rythme là , le soleil n'aura plus d'hydrogène quand je commencerais à comprendre le kinois...
Faut pas être maso , ta pas le niveau , tu passes à autre chose et puis c'est tout , c'est pas un drame.
Ça va faire au moins dix piges que tu traîne tes savates sur le forum sans rien bité ( il y avait le forum de Ced avant pour ceux qui veulent me reprendre de volée ).
Je ne serais jamais astronaute , ni super star , ni un homme d'affaire milliardaire , toi , tu ne sera jamais un programmeur amateur.
n'y vois pas de méchanceté , mais c'est la triste réalité.

@+

Re: qui peux me donner quelques cours pour la création de je

Publié : mer. 25/janv./2012 19:48
par jbernard13
G-Rom a écrit :
je sais que c'est une variable et je programme pas souvent faute de temps
Alors pourquoi programmer ? si tu n'as pas le temps , fait autre chose , plante des patates.
Je ne vais pas apprendre un truc complexe si je n'ai pas le temps de l’étudier correctement.
C'est comme ci j’apprenais le Chinois et que je m'accordait que 30 secondes de temps par jour pour apprendre ...
a ce rythme là , le soleil n'aura plus d'hydrogène quand je commencerais à comprendre le kinois...
Faut pas être maso , ta pas le niveau , tu passes à autre chose et puis c'est tout , c'est pas un drame.
Ça va faire au moins dix piges que tu traîne tes savates sur le forum sans rien bité ( il y avait le forum de Ced avant pour ceux qui veulent me reprendre de volée ).
Je ne serais jamais astronaute , ni super star , ni un homme d'affaire milliardaire , toi , tu ne sera jamais un programmeur amateur.
n'y vois pas de méchanceté , mais c'est la triste réalité.

@+

Code : Tout sélectionner

;** afficher un texte ** 
#texte=1
; on inialise tout 
InitSprite()
InitKeyboard()

;on crée un écran 
Ecran_x= GetSystemMetrics_(#SM_CXSCREEN)
Ecran_y= GetSystemMetrics_(#SM_CYSCREEN) 
 
OpenScreen(Ecran_x,Ecran_y,32," Exemple de texte")

; on charge la police d'ecriture et on crée un sprite 
LoadFont(1,"impact", 50)
;** Creation du sprite**
CreateSprite(#texte,Ecran_x,Ecran_y)
Texte$ =" G ROM"
StartDrawing(SpriteOutput(#texte))
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID(1))
  DrawText(0,-14,Texte$,RGB($FF,$0,$0))
  Longueur_text = TextWidth(text$) 
  StopDrawing()
; Boucle du programme 

  Repeat 
    ;** animation du texte **
    x=x-3 
    If x<0- Longueur_text
      x=Ecran_x
    EndIf 
    y=Ecran_y-500
  DisplayTransparentSprite(#texte,x,y) 
  FlipBuffers() 
  ClearScreen(0)
  ExamineKeyboard() 
  
Until KeyboardPushed(#PB_Key_Escape) 

Re: qui peux me donner quelques cours pour la création de je

Publié : mer. 25/janv./2012 20:12
par Fig
Allons messieurs... Image

Re: qui peux me donner quelques cours pour la création de je

Publié : mer. 25/janv./2012 20:52
par SPH
Joli petit code. C"est un bon debut :mrgreen:

Re: qui peux me donner quelques cours pour la création de je

Publié : mer. 25/janv./2012 21:10
par Cool Dji
Cool,

Bon, ce n'est pas vraiment une raquette pour un ping et on avait dit un déplacement de haut en bas avec la souris...
Tu as une base pour avancer...

Bravo en tous les cas, comme quoi on a toujours besoin d'une motivation pour avancer

Re: qui peux me donner quelques cours pour la création de je

Publié : mer. 25/janv./2012 21:16
par G-Rom

Code : Tout sélectionner

; on inialise tout
InitSprite()
InitKeyboard()
ExamineDesktops()
;on crée un écran
Ecran_x= DesktopWidth(0)
Ecran_y= DesktopHeight(0)

OpenScreen(Ecran_x,Ecran_y,32," Exemple de texte")

; on charge la police d'ecriture et on crée un sprite
LoadFont(1,"impact", 50)
;** Creation du sprite**

Texte$ ="ET ALORS ? C'EST PAS TON CODE ..."
Longueur_text = 0
For i = 1 To Len(Texte$)
  char$ = Mid(Texte$,i,1)
  
  StartDrawing(ScreenOutput())
    DrawingFont(FontID(1))
    CreateSprite(i,TextWidth(char$),TextHeight(char$))
    Longueur_text + TextWidth(char$)
  StopDrawing()  
  
  StartDrawing(SpriteOutput(i))
    Box(0,0,SpriteWidth(i),SpriteHeight(i),0)
    DrawingFont(FontID(1))
    DrawText(0,0,char$,$FF)
  StopDrawing()
  
  
  TransparentSpriteColor(i,$0)
Next 

  
  Repeat
    ;** animation du texte **
    x=x-10
    If x<0- Longueur_text
      x=Ecran_x
    EndIf
    y=Ecran_y-500
    offSet = 0
    For i = 1 To Len(Texte$)
      a+10
      xx = x+offSet
      yy = y+10+(i*2-(Len(Texte$)))  * Sin(x*#PI/180)
      
      For j = 0 To 10
        DisplayTransparentSprite(i,xx+j,yy+j)
      Next 
      offSet + SpriteWidth(i) + 10
    Next 
 
  FlipBuffers()
  ClearScreen(0)
  ExamineKeyboard()
 
Until KeyboardPushed(#PB_Key_Escape) 
CloseScreen()
OpenWindow(#PB_Any,0,0,800,600,"")
WebGadget(#PB_Any,10,10,800-20,600-20,"http://www.plantdepommedeterre.org/pages/jardin4.htm")
Repeat : Until WindowEvent() = #PB_Event_CloseWindow
End 
:mrgreen:

Re: qui peux me donner quelques cours pour la création de je

Publié : mer. 25/janv./2012 21:22
par SPH
Un plant de patate, lol :mrgreen:

Bon, jb13, essaye de te tenir a coder une seule chose. Tu verras tu y arrivera.

Re: qui peux me donner quelques cours pour la création de je

Publié : jeu. 26/janv./2012 12:57
par graph100
si vous continuez comme ça, vous aller peut être déboucher sur une intro sympa :lol:

> au moins, c'est une dispute en code, stylé :mrgreen: <

Re: qui peux me donner quelques cours pour la création de je

Publié : jeu. 26/janv./2012 17:20
par Atlante
graph100 a écrit : > au moins, c'est une dispute en code, stylé :mrgreen: <
Tant que cela part pas en vrille, sinon le post disparaitra.
L'image du forum doit etre préservée au maximum.
Cordialement.

Atlante

Re: qui peux me donner quelques cours pour la création de je

Publié : jeu. 26/janv./2012 18:41
par Kwai chang caine
@Grom
:lol: :lol: Je pensais pas me marrer autant à cette heure de la journée :lol: :lol:

Re: qui peux me donner quelques cours pour la création de je

Publié : ven. 27/janv./2012 11:50
par Anonyme 2
Yo, si tu veux te lancer dans jeu, il y a quelques tutos pour debutant ici.
Sinon, cool la bataille de codes :D

Re: qui peux me donner quelques cours pour la création de je

Publié : sam. 28/janv./2012 8:16
par jbernard13
Pour le moment j'ai dessiné un drapeau ( j'ai compris chaque commande ) :

Code : Tout sélectionner

;**  Dessin du Drapeau Francais par Jbernard 
;*** On inialise tout  ****
InitSprite()
InitKeyboard()
;Creation de l'ecran( 800 x 600 )
OpenScreen( 800,600,32," Drapeau Français")
;Boucle du programme 
Repeat 
  ExamineKeyboard()
  ClearScreen(RGB(0,0,0))
  ;Dessin du drapeau 
  StartDrawing(ScreenOutput())
    Box(7,7,280,587,RGB($0,$0,$FF)); Bleu 
    Box(250,7,290,587,RGB(255, 255, 255));Blanc
    Box(535,7,260,587,RGB($FF,$0,$0));Rouge
    StopDrawing()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Re: qui peux me donner quelques cours pour la création de je

Publié : sam. 28/janv./2012 10:34
par blendman
yop

En fait, la première question que j'aurai envie de poser c'est : parles-tu anglais et quel niveau tu as ?
car je pense que le purebasic est l'un des langages les plus simples et rapides à apprendre qui soit, pour peu de parler anglais (avec un niveau moyen), car ça facilité tout de suite la compréhension des choses.
Autre chose importante, il faut avoir de la mémoire (un minimum) et pouvoir se concentrer au moins une demi-heure. Dans certains cas, bien que ce ne soit pas impossible, c'est très difficile pourtant on y arrive.

Si ces 2 choses sont réunies, il n'y a aucune raison que tu n'arrives pas à réaliser un petit jeu. Si ce n'est pas le cas, comme le dit G-rom, et bien ce n'est pas grave, ce n'est pas fait pour toi, c'est tout. Et entre nous, y'a aucune honte à planter des patates, moi, l'été je plante des tomate, des carottes, des radis, et je récolte des fraises, des groseilles, des poires, etc :mrgreen:

Bref, pour le jeu, il faut faire les choses dans l'ordre :
- d'abord apprendre à afficher des sprites sur un écran : ça visiblement, ça commence à être le cas.
- puis, ajouter quelques évènements : clavier ou souris (clavier dans un premier temps pour bouger un sprite). Afficher des variables et les modifier.
- puis faire des interaction : collision entre 2 sprites par exemple. Tu verifies qu'un sprite (x/y et largeur /hauteur) n'est pas collé à un autre.
- puis faire une interface : afficher des points

Collision simple :

Code : Tout sélectionner

if sprite1\x +sprite1\largeur> sprites2\x and sprite1\x < sprites2\x+sprite2\largeur and sprite1\y < sprites2\y+sprite2\hauteur and sprite1\y+sprite1\hauteur > sprites2\y
variable1 = 1
; autres evenements
endif
Et petit à petit ton petit jeu va se construire.
Il y a beaucoup d'exemples sur le forum. j'ai même fait un sujet sur les jeux en purebasic dans la rubrique jeu :
http://www.purebasic.fr/french/viewtopi ... =2&t=12360

Allez, un petit code de collision et d'event simple :

Code : Tout sélectionner

;{ structures
Structure StPersonnage
  x.w
  y.w
  sprite.w
  largeur.w
  hauteur.w
EndStructure
Global perso.StPersonnage ; on ajoute un personnage
Global mechant.StPersonnage ; on ajoute un mechant
;}

;{ constantes, enumeration,variables
#window = 0
Enumeration 
  #perso
  #mechant
EndEnumeration
Global texte$, event.l
;}

;{ declaration des procedures
Declare CollisionSimple()
Declare BougerPersonnage()
;}

;{ cinitialisation & window
If InitSprite() =0 Or InitKeyboard() = 0 Or InitSprite3D()=0
  MessageRequester("Erreur", "Erreur d'initialisation")
EndIf

OpenWindow(#window,0,0,800,600,"test jeu",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#window),0,0,800,600,0,0,0)

;{ creation de sprites
; le gentil perso
CreateSprite(#perso,64,64,#PB_Sprite_Texture)
CreateSprite3D(#perso,#perso)
StartDrawing(SpriteOutput(#perso))
Box(0,0,SpriteWidth(#perso),SpriteHeight(#perso),#White)
StopDrawing()

perso\hauteur = SpriteHeight(#perso)
perso\largeur = SpriteWidth(#perso)
perso\x = Random(800)
perso\y = Random(600)
perso\sprite = #perso


; le mechant
CreateSprite(#mechant,64,64,#PB_Sprite_Texture)
CreateSprite3D(#mechant,#mechant)
StartDrawing(SpriteOutput(#mechant))
Box(0,0,SpriteWidth(#mechant),SpriteHeight(#mechant),#Red)
StopDrawing()

mechant\hauteur = SpriteHeight(#mechant)
mechant\largeur = SpriteWidth(#mechant)
mechant\x = Random(800)
mechant\y = Random(600)
mechant\sprite = #mechant
;}

;}

;{ boucle principale
Repeat
  
  event = WaitWindowEvent(1)
  ClearScreen(0)
  Start3D()
  DisplaySprite3D(perso\sprite,perso\x,perso\y)
  DisplaySprite3D(mechant\sprite,mechant\x,mechant\y)  
  Stop3D()
  StartDrawing(ScreenOutput())
  DrawText(50,50,texte$)
  StopDrawing()
  FlipBuffers() 
  
  
  CollisionSimple()
  BougerPersonnage()
Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow
;}

;{ procedure 
Procedure CollisionSimple()
  If perso\x +perso\largeur> mechant\x And perso\x < mechant\x+mechant\largeur And perso\y < mechant\y+mechant\hauteur And perso\y+perso\hauteur > mechant\y
    texte$ = "Touché !"
  Else
    texte$ = "pas de collision !"
  EndIf 
EndProcedure

Procedure BougerPersonnage()
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Right)
    perso\x +2
  EndIf
  If KeyboardPushed(#PB_Key_Left)
    perso\x-2
  EndIf
  If KeyboardPushed(#PB_Key_Up)
    perso\y-2
  EndIf
   If KeyboardPushed(#PB_Key_Down)
    perso\y+2
  EndIf
EndProcedure
;}

Re: qui peux me donner quelques cours pour la création de je

Publié : sam. 28/janv./2012 11:16
par jbernard13
merci blendman

j'ai un anglais moyen niveau 1
deja j'ai pas de jardin chez moi et j'ai pas la main verte .

Re: qui peux me donner quelques cours pour la création de je

Publié : sam. 28/janv./2012 12:27
par Backup
pour les collisions PB dispose de ce qu'il faut :

tu aurai pu faire :

Code : Tout sélectionner

Procedure CollisionSimple()   
    if SpritePixelCollision(perso\sprite, perso\x, perso\y, mechant\sprite, mechant\x, mechant\y)
        texte$ = "Touché !"
        Else
        texte$ = "pas de collision !"
    EndIf   
EndProcedure
au lieu de :

Code : Tout sélectionner

Procedure CollisionSimple()
      If perso\x +perso\largeur> mechant\x And perso\x < mechant\x+mechant\largeur And perso\y < mechant\y+mechant\hauteur And perso\y+perso\hauteur > mechant\y
         texte$ = "Touché !"
       Else
         texte$ = "pas de collision !"
         EndIf    
endprocedure

je trouve que pour un débutant c'est plus simple de comprendre la fonction SpritePixelCollision(#Sprite1, x1, y1, #Sprite2, x2, y2)
qu'une serie de test basé sur "<,>,+ et And" ;)

il suffit de comparer le code assembleur pour comprendre le gain de temps de la fonction SpritePixelCollision() :)

le test de collision avec la serie de "<,>,and,+"

Code : Tout sélectionner

; Procedure CollisionSimple()
macro MP0{
_Procedure0:
  PUSH   ebp
  PUSH   ebx
  PUSH   edi
  PS0=20
  XOR    eax,eax
  PUSH   eax                                                                                                                                                                                              
; If perso\x +perso\largeur> mechant\x And perso\x < mechant\x+mechant\largeur And perso\y < mechant\y+mechant\hauteur And perso\y+perso\hauteur > mechant\y
  LEA    ebp,[v_perso]
  MOVSX  ebx,word [ebp]
  MOVSX  eax,word [ebp+6]
  ADD    ebx,eax
  LEA    ebp,[v_mechant]
  MOVSX  eax,word [ebp]
  CMP    ebx,eax
  JLE    No0
  LEA    ebp,[v_perso]
  MOVSX  ebx,word [ebp]
  LEA    ebp,[v_mechant]
  MOVSX  edi,word [ebp]
  MOVSX  eax,word [ebp+6]
  ADD    edi,eax
  CMP    ebx,edi
  JGE    No0
  LEA    ebp,[v_perso]
  MOVSX  ebx,word [ebp+2]
  LEA    ebp,[v_mechant]
  MOVSX  edi,word [ebp+2]
  MOVSX  eax,word [ebp+8]
  ADD    edi,eax
  CMP    ebx,edi
  JGE    No0
  LEA    ebp,[v_perso]
  MOVSX  ebx,word [ebp+2]
  MOVSX  eax,word [ebp+8]
  ADD    ebx,eax
  LEA    ebp,[v_mechant]
  MOVSX  eax,word [ebp+2]
  CMP    ebx,eax
  JLE    No0
Ok0:
  MOV    eax,1
  JMP    End0
No0:
  XOR    eax,eax
End0:
  AND    eax,eax
  JE    _EndIf2
; texte$ = "Touché !"
  MOV    edx,_S1
  LEA    ecx,[esp]
  CALL   SYS_FastAllocateStringFree
; Else
  JMP   _EndIf1
_EndIf2:
; texte$ = "pas de collision !"
  MOV    edx,_S2
  LEA    ecx,[esp]
  CALL   SYS_FastAllocateStringFree
; EndIf
_EndIf1:
; EndProcedure
  XOR    eax,eax
_EndProcedure1:
  PUSH   dword [esp]
  CALL  _SYS_FreeString@4
  ADD    esp,4
  POP    edi
  POP    ebx
  POP    ebp
  RET
}
le test avec la fonction de collision de PB :

Code : Tout sélectionner

; Procedure CollisionSimple()   
macro MP0{
_Procedure0:
  PUSH   ebp
  PS0=12
  XOR    eax,eax
  PUSH   eax                                                                                                                                                                                                                  
; if SpritePixelCollision(perso\sprite, perso\x, perso\y, mechant\sprite, mechant\x, mechant\y)
  LEA    ebp,[v_mechant]
  MOVSX  eax,word [ebp+2]
  PUSH   eax
  MOVSX  eax,word [ebp]
  PUSH   eax
  MOVSX  eax,word [ebp+4]
  PUSH   eax
  LEA    ebp,[v_perso]
  MOVSX  eax,word [ebp+2]
  PUSH   eax
  MOVSX  eax,word [ebp]
  PUSH   eax
  MOVSX  eax,word [ebp+4]
  PUSH   eax
  CALL  _PB_SpritePixelCollision@24
  AND    eax,eax
  JE    _EndIf2
; texte$ = "Touché !"
  MOV    edx,_S1
  LEA    ecx,[esp]
  CALL   SYS_FastAllocateStringFree
; Else
  JMP   _EndIf1
_EndIf2:
; texte$ = "pas de collision !"
  MOV    edx,_S2
  LEA    ecx,[esp]
  CALL   SYS_FastAllocateStringFree
; EndIf   
_EndIf1:
; EndProcedure
  XOR    eax,eax
_EndProcedure1:
  PUSH   dword [esp]
  CALL  _SYS_FreeString@4
  ADD    esp,4
  POP    ebp
  RET
}