Éditeur de livres jeux, besoin de conseils

Programmation d'applications complexes
Avatar de l’utilisateur
DjPoke
Messages : 121
Inscription : mar. 02/nov./2010 13:53
Localisation : Corte, Corse, France
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par DjPoke »

Étrange, j'ai modifié tout pour tourner en plein écran (1024x768).
Cela fonctionne quand je compile dans l'éditeur purebasic, mais cela plante à un moment donné avec l'executable compilé.
Je ne comprend pas... Bug de la version 5.30 (x86) ?
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par majikeyric »

Je rencontre un problème similaire...
Lorsque j'exécute mon programme dans l'IDE y a pas de soucis mais si je lance l'exécutable j'ai un bug de sprite ?!!

Enfin peut être que ça n'a pas de rapport avec toi. Faut que je creuse...
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Éditeur de livres jeux, besoin de conseils

Message par SPH »

majikeyric a écrit :Je rencontre un problème similaire...
Lorsque j'exécute mon programme dans l'IDE y a pas de soucis mais si je lance l'exécutable j'ai un bug de sprite ?!!

Enfin peut être que ça n'a pas de rapport avec toi. Faut que je creuse...
Peut etre que ton code ne trouve pas le chemin du fichier du sprite
http://HexaScrabble.com/
!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.00 - 64 bits
Avatar de l’utilisateur
DjPoke
Messages : 121
Inscription : mar. 02/nov./2010 13:53
Localisation : Corte, Corse, France
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par DjPoke »

J'ai essayé de compiler mon code avec la version 64bits, et là, aucun problèmes, ni sous l'IDE, ni dans l'executable.
Je penche donc vers un bug de purebasic version x86.
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par majikeyric »

SPH a écrit :Peut etre que ton code ne trouve pas le chemin du fichier du sprite
bein non pourtant, y a un seul sprite sur 45 qui buggue...

Je chercherai quand j'aurai un peu de temps.
Avatar de l’utilisateur
DjPoke
Messages : 121
Inscription : mar. 02/nov./2010 13:53
Localisation : Corte, Corse, France
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par DjPoke »

Si c'est bien une image qui plante, au moment où le programme plante chez moi, il est censé charger par script l'image "deco1.png" qui a pour seule différence par rapport aux précédentes d'avoir une grande zone dont la teinte Alpha est à 0. (Transparence 'png')

Je vais regarder si il n'y a pas quelque chose qui me choque dans mon programme au niveau du chargement de l'image et de l'affichage, mais cela m'étonne quand même que purebasic x86 plante et pas purebasic x64.

EDIT:

Voici la partie qui pourrait être à incriminer, mais je ne vois pas d'erreurs :

Code : Tout sélectionner

        ElseIf Left(a$,7) = "<IMAGE>"
          tempimg = LoadImage(#PB_Any,"projets\"+project_dir$+"\"+Mid(a$,8))
          DrawingMode(#PB_2DDrawing_AlphaBlend)  
          DrawImage(ImageID(tempimg),56 + offsetX,84)
          DrawingMode(#PB_2DDrawing_Transparent)
          FreeImage(tempimg)
'a$' contient normalement <IMAGE>deco1.png (en tout cas, dans l'IDE, c'est le cas) et OffsetX est égale à 0 ou 512 selon si l'image va à gauche ou à droite de l'écran.

EDIT2:
J'ai un vague souvenir d'avoir eu déjà un problème avec la commande FreeImage si je m'en sert trop rapidement.
Une idée ? C'est peut-être là mon problème ?
Peut-être que l'IDE avec le debugger est plus lent, et fonctionne, mais pas la version compilée ?

EDIT3:
Non, c'est lié à la souris. Un clic n'importe où avec n'importe quel bouton à ce moment là et ça plante.
J'ai eu le même problème au même endroit avec la version canvas.
Avatar de l’utilisateur
DjPoke
Messages : 121
Inscription : mar. 02/nov./2010 13:53
Localisation : Corte, Corse, France
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par DjPoke »

Bon, ben, je vais reprogrammer ça sous la SDL 2 en C ou C++ :
Impossible d'avoir un executable 32 bits qui fonctionne, alors que sous l'IDE cela fonctionne impeccable.
Impossible de debugger, donc, ni de contourner un éventuel bug de PB x86.

En 64 bits, cela fonctionne mais cela ne m'intéresse pas.
Dommage pour moi, je suis un peu déçu...
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par Ar-S »

Pas de raison que tu n'y arrives pas en PB...
Ce ne serait pas es histoire de .l .i ? Je pars en vacances demain je ne pourrai pas trop surfer mais c'est dommage que tu lâches l'affaire.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
DjPoke
Messages : 121
Inscription : mar. 02/nov./2010 13:53
Localisation : Corte, Corse, France
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par DjPoke »

En fait, j'ai fait des test, et il semble qu'au bout de plusieurs usages, à un moment donné, le fait de dessiner dans un sprite fasse planter l'exe.
Ce qui m'intrigue, c'est que cela fonctionne dans l'IDE et qu'un exe 64 bits fonctionne aussi.
Je suis pommé car je ne peux pas débugger.

A moins que je puisse créer un exe avec débugger intégré dedans, mais si cela est possible, comment puis-je invoquer le débugger ?

EDIT: Est ce que la déclaration d'un sprite sans .l ou .i ne peut pas déclencher ce genre de problèmes en 32 bits ?
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par Ar-S »

Penses tu bien à libérer les sprites qui ne servent plus avec FreeSprite() ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
DjPoke
Messages : 121
Inscription : mar. 02/nov./2010 13:53
Localisation : Corte, Corse, France
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par DjPoke »

Voici l'une des deux fonctions ou fonctions qui font planter le programme à un moment donné :

Code : Tout sélectionner

; Dessiner les deux pages vierges
Procedure ShowPages()
  StartDrawing(SpriteOutput(screen))
  DrawImage(ImageID(pages),0,0)
  StopDrawing()
EndProcedure
'screen' est une variable globale qui contient un sprite de 1024x768 sans alphablending ni collision, et 'pages' est une variable globale qui contient une image png en 1024x768.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par Ar-S »

Pour rappel, il ne faut pas que ton sprite soit plus grand que ta fenêtre. Si tu es en openwindowscreen.
J'avais trouvé un super petit exe qui permettait de debugger en externe, je ne le trouve plus, je cherche...
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
DjPoke
Messages : 121
Inscription : mar. 02/nov./2010 13:53
Localisation : Corte, Corse, France
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par DjPoke »

Non, je suis maintenant en plein écran.

EDIT: J'ai modifié le code qui plante comme ceci :

Code : Tout sélectionner

; Dessiner les deux pages vierges
Procedure ShowPages()
  If StartDrawing(SpriteOutput(screen))
    DrawImage(ImageID(pages),0,0)
    StopDrawing()
  Else
    End
  EndIf
EndProcedure
Et en fait, Startdrawing ne retourne pas de pointeur sur mon sprite.
Je ne comprend pas, parce que compilé avec PB x64, ça fonctionne.

EDIT2: J'ai trouvé ! C'est un bug à propos de #PB_Any sur la création de sprites.

En remplaçant :

Code : Tout sélectionner

; Créer le sprite buffer d'écran
Global screen = CreateSprite(#PB_Any,1024,768)
par

Code : Tout sélectionner

; Créer le sprite buffer d'écran
Global screen = 0
CreateSprite(screen,1024,768)
cela fonctionne enfin.

Est ce que quelqu'un peut me décrire mon erreur pour que je ne la refasse plus à l'avenir ?
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par falsam »

@DjPoke: J'ai téléchargé ton fichier compressé, mais apparemment il est corrompu. J'ai désactivé mon Antivirus au cas ou, mais même résultat.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
DjPoke
Messages : 121
Inscription : mar. 02/nov./2010 13:53
Localisation : Corte, Corse, France
Contact :

Re: Éditeur de livres jeux, besoin de conseils

Message par DjPoke »

Si c'est un virus "heuristique", c'est PB qui est de moins en moins toléré par les antivirus.
Hier, j'ai pris un programme à moi qui marche très bien sur l'ancienne version d'Avira, et je l'ai testé sur un PC avec la nouvelle version d'Avira qui me detecte un virus heuristique.
Si j'ai bien compris, c'est un virus potentiel, et non pas un virus signé.
Les programmes compilés en PB sous Avast n'étaient déjà plus tolérés, mais là cela devient grave !!!

EDIT: Pour que cela fonctionne, j'ai pris l'antivirus de microsoft...
Répondre