qui peux me donner quelques cours pour la création de jeux

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

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

Message 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é.

@+
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

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

Message 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) 
Jbernard13
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

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

Message par Fig »

Allons messieurs... Image
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

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

Message par SPH »

Joli petit code. C"est un bon debut :mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

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

Message 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
Only PureBasic makes it possible
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

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

Message 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:
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

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

Message par SPH »

Un plant de patate, lol :mrgreen:

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

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

Message 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: <
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

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

Message 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
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message par Kwai chang caine »

@Grom
:lol: :lol: Je pensais pas me marrer autant à cette heure de la journée :lol: :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Anonyme 2
Messages : 183
Inscription : ven. 18/mars/2011 11:53

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

Message 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
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

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

Message 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)
Jbernard13
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

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

Message 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
;}
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

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

Message 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 .
Jbernard13
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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
}
Répondre