Forum Liberty Basic France

Jeux » Shoot'em up '80 et petits problèmes à résoudre
Le 17/12/2020 à 13h04

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2371
Reprise du message précédent

Citation:
quand on charge une matrice, on a aucune garantie d'afficher la palette qu'on utilisait la dernière fois

Pour ça je ne vois que deux solutions:
- Mettre un indice dans le nom du fichier "Matrice", et le même pour le nom du fichier "Palette".
- Intégrer la palette au fichier "Matrice".
Citation:
palette modifiée entre temps

Pour "Geler" la palette, on peut mettre un flag (drapeau) dans le fichier de la palette qui mettra un: "!disable" sur le bouton d'enregistrement. (mais c'est sans retour).
Citation:
on créée une nouvelle palette reprenant les couleurs de la matrice

Il sera aussi facile de faire un système de lecture/reproduction des couleur présentes dans la matrice. (il y a plusieurs façons d'écorcher un chat [USA imported])
Citation:
on m'a suggéré d'écrire un bouquin

En général on fait ça quand on est retiré des "affaires".
Citation:
je ne sais pas comment

On a confiance.

EDIT: J'ai testé la nouvelle mouture : --> "Primitive failed" chez moi aussi
Je vais essayer de trouver l'os qui coince la machine à saucisse.

re-EDIT: En mettant un wait avant la création de la fenêtre on peut présumer que le "primitive failed" se situe dans le mic-mac préalable que tu fais avec les dossiers (existe, n'existe pas, existe peut-être, dossier fantôme, dossier fantasmagorique, autre dossier...)

re-re-edit: Confirmation; j'ai viré tout ton mic-mac et ça marche.
Faut pas déconner, les dossiers ils y sont ou ils n'y sont pas; tu imagine un soft dans lequel il manquerait la moitié des dossiers ?

re-re-re édit: Ta procédure de chargement des palettes est pour le moins "originale"; un "filedialog" dans le dossier serait tellement plus simple; mais bon, si c'est pour le plaisir d'ouvrir des fenêtres, on peut comprendre.
Mais y mettre un bouton de fermeture !? pourquoi faire simple quand on peut faire compliqué..
Toi tu aime trop les complications, tu ne serais pas horloger ?
____________________
Roro

   
Le 17/12/2020 à 19h03

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 696
Dossier fantôme, mais pas fantasmagorique ;)

Citation:
les dossiers ils y sont ou ils n'y sont pas; tu imagine un soft dans lequel il manquerait la moitié des dossiers ?
On voit bien que tu n'as jamais été confronté à des bricoleurs ;) et même sans être bricoleur, distrait ou maladroit, tout le monde fait des gaffes. Donc l'être humain étant intimement lié au concept de l'erreur, prévoir en amont une partie de ses éventuelles bourdes ne mange pas de pain. Forcément, le code devient plus compliqué.

Mais comme il semble pleinement fonctionnel sur ma machine habituelle, et qu'il n'y a pas eu d'utilisation aux limites, ou détournées, des instructions basic, il n'est pas normal qu'il plante quand il tourne sur un autre ordi. Trois possibilités : 1. j'ai mal posé le contexte dans lequel s'exécute telle ou telle instruction, et de temps en temps, ça coince. 2. le problème est matériel et concerne la clef USB et son lecteur. 3. on a levé un bug dans JB/LB.

(Il existe aussi une possibilité 1-bis : contrairement au 1., ça ne coince pas, parce que wine remet de lui-même les choses en place et rend ainsi l'exécution des logiciels plus sûre que dans un vrai windows - je taquine, j'ai pas été voir comment wine fonctionnait ;) )

Citation:
Mais y mettre un bouton de fermeture !? pourquoi faire simple quand on peut faire compliqué..
Toi tu aime trop les complications, tu ne serais pas horloger ?
J'aime bien les horloges et les mécanismes, mais le choix de la palette est on-ne-peut-plus-simple, je pense que tu voulais parler des fenêtres de sauvegarde : le bouton de fermeture peut sembler superflu, et je ne sais plus pourquoi il y est. Je dirais qu'on est en phase de conception, et que si à l'usage on s'aperçoit qu'un bouton ne sert à rien et complique la vie, on l'enlève. Je voulais sans doutes que dans la liste, on voit s'afficher le fichier que je venais de sauvegarder, un peu comme une sorte de confirmation "de visu", après laquelle on ferme la fenêtre.

Dans mon code, FILEDIALOG ne convient pas à tous les accès disque, et plutôt que d'avoir tantôt une fenêtre filedialog, tantôt une fenêtre perso, j'harmonise tout en utilisant des fenêtres perso. il y a effectivement des cas où FILEDIALOG serait tout à fait indiqué et suffisant.

Je vais regarder l'error log, et sur internet, ce que je peux trouver au sujet de ce "primitive failed" qui m'intrigue.
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 17/12/2020 à 22h45

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 696
Rien trouvé de bien folichon sur le net, ce qui se rapproche le plus mais qui n'est pas mon problème, et que je cite pour curiosité, sont un gros bitmap lisible par LibertyBasic et pas par JustBasic et des DLL non standard utilisées dans un programme LibertyBasic exécuté par linux/wine, et que le programme ne trouve pas.

Je n'arrive plus à reproduire le plantage. Il est peut-être simplement latent, et serait intervenu à la cent vingt et unième tentative si j'en avais fait cent vingt. Peut-être que mon windows a eu du mal à redémarrer après des mois d'inactivité : il a laissé hier un bootlog.txt sur la clef m'annonçant qu'il avait vérifié la clef, et en général il le fait seulement après un problème...

A partir de maintenant, je programme sur le petit eeePC, accessoirement en attente du futur plantage.

L'autre problème est sur l'image :

La couleur gris clair dans le graphicbox est la trace laissée par la fenêtre de chargement de matrices. Des fois elle est jaune, des fois verte, je ne serais pas surpris que ce soit une des couleurs de la palette. J'entrevois la solution dans la maitrise d'un processus que je n'ai pas encore assimilé : les segments.

Pour le moment, le programme fais régulièrement des captures graphiques qu'il réaffiche au besoin, ce qui explique qu'il peut y avoir des pans entiers de l'image qui soient devant la trace grise quand d'autres sont restés derrière, mais j'ai pas l'impression que c'est la bonne méthode. Segments ! Segments ! Segments ;)

Comme je n'ai pas ce soucis avec Wine, on vient de trouver une différence entre le programme exécuté dans son environnement natif, et le même lancé avec wine. C'est assez rare pour être noté.
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 21/12/2020 à 14h24

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2371
Citation:
je pense que tu voulais parler des fenêtres de sauvegarde

Non je parle de la fenêtre de chargement. Le filedialog dans un autre dossier n'est gênant que pendant le développement.
Citation:
La couleur gris clair dans le graphicbox

Avec un filedialog il n'y a plus cette trace (testé)

Chez moi (XP pro) ça "primitive failed" à tous les lancements, jusqu'à ce que je vire le pré mic-mac des fichiers.

Note: Le forum ne m'a pas signalé ton dernier msg dans la fenêtre d'accueil mais seulement quand j'ai été dans "Jeux" (pour y poster mon dernier délire "mot mystère").
Et j'en conclus que tu n'a pas vu "Autre mémoire" dans "Général".
____________________
Roro

   
Le 23/12/2020 à 18h19

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 696
Donc si on résume, on a deux problèmes : les opérations sur les fichiers qui se soldent par un primitive failed, et certaines fenêtres (mais pas toutes) qui oublient, quand elles se ferment, de remettre le décor qu'elles ont recouvert en s'ouvrant. Je ne vois pas en quoi ouvrir un fichier empêcherait une fenêtre de remettre le décor qu'elle a recouvert, ça me semble bien être deux problèmes distincts. La trève des fêtes de fin d'années va reporter le débogage à l'année prochaine, et ça permettra de revenir avec un regard neuf.

Citation:
Le forum ne m'a pas signalé ton dernier msg dans la fenêtre d'accueil mais seulement quand j'ai été dans "Jeux" (pour y poster mon dernier délire "mot mystère").
Et j'en conclus que tu n'a pas vu "Autre mémoire" dans "Général".

Possible qu'il y en ait que je n'ai pas vu, mais globalement j'étais trop pris par ma propre programmation pour me pencher sérieusement sur d'autres programmes
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 24/12/2020 à 00h45

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2371
Citation:
les opérations sur les fichiers qui se soldent par un primitive failed

Possible qu'il y ait eu un em"lage de pinceaux dans ton mic-mac.
Citation:
Je ne vois pas en quoi ouvrir un fichier empêcherait une fenêtre de remettre le décor qu'elle a recouvert

Il doit manquer un flush quelque part.
____________________
Roro

   
Le 24/12/2020 à 16h51

Libertynaute Actif

Groupe: Membre

Inscrit le: 17/12/2010
Messages: 106
je sais pas s'il y a un rapport, mais perso j'ai du corrigé une fct "exist" qui buggait dans certains cas.
Ci aprés Ma version corrigé:

Code VB :
 
function exist(cheminDuFichier$)
    '--------------------------------------------------
    'correction d'un bug pouvant survenir lorsque l'on
    'execute la fonction à partir d'une racine (c:\, E:\,...)
    if (mid$(cheminDuFichier$, 3, 1) = "\") and (mid$(cheminDuFichier$, 4, 1) = "\") then
        Part1$ = mid$(cheminDuFichier$, 1, 3)
        Part2$ = mid$(cheminDuFichier$, 5)
        cheminDuFichier$ = Part1$ + Part2$
    end if
    '--------------------------------------------------
    Fichier$=Fichier$(cheminDuFichier$)
    Path$=Path$(cheminDuFichier$)
    dim info$(10,10)
    files Path$, Fichier$, info$(
    if val(info$(0, 0)) > 0 then
        exist = 1
    else
        exist = 0
        MsgErreur$ = "ERREUR !";chr$(13)
        MsgErreur$ = MsgErreur$;"Le fichier :";chr$(13);cheminDuFichier$;chr$(13);"n'a pu être trouvé.";chr$(13)
        'MsgErreur$ = MsgErreur$;"Le programme va se terminer."
        'notice MsgErreur$
        'end    '/!\ permet de stopper le programme en cas d'abscence du fichier.
    end if
end function
 
function Fichier$(Path$)
    while instr(Path$,"\")
        Path$=right$(Path$,len(Path$)-1)
    wend
    Fichier$=Path$
end function
 
function Path$(Fichier$)
    Fichierindex=len(Fichier$)  'separe le dossier et le nom du Fichier
    Fichierlength=len(Fichier$)
    while mid$(Fichier$, Fichierindex,1)<>"\"
        Fichierindex=Fichierindex-1
        if Fichierindex<0 then
            exit while
        end if
    wend
    Path$=left$(Fichier$,Fichierindex)
end function
 




Edité par joan74 Le 24/12/2020 à 16h54
____________________
"L'urgent c'est fait ! L'impossible est en cours... pour les miracles, merci de prévoir un délai supplémentaire !"

   
Le 26/12/2020 à 17h42

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 696
Merci pour cette petite contrib', et c'est le "certains cas" qui m'intéresse. Pour le moment, l'important est de régler le problème des fenêtres qui laissent une trace fantôme, en réécrivant le programme avec des segments, car, après tout, si le staff LibertyBasic s'est donné la peine de mettre en place un tel système, c'est sûrement qu'il doit avoir une utilité. je me pencherai sur le "mic-mac" en son temps.

A bientôt pour de nouvelles aventures !
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 27/12/2020 à 00h33

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 696
Citation:
Citation:
Je ne vois pas en quoi ouvrir un fichier empêcherait une fenêtre de remettre le décor qu'elle a recouvert
Il doit manquer un flush quelque part.
Il faudra que je teste un GETBMP bien ajusté juste avant l'ouverture de la fenêtre, et un DRAWBMP juste après sa fermeture. Comme les données essentielles sont en tableaux et que l'affichage ne fait qu'afficher, ça ne devrait pas perturber grand chose.
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 27/12/2020 à 01h26

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2371
Citation:
Il faudra que je teste un GETBMP bien ajusté

Il y a plusieurs façons d'écorcher un chat (proverbe US/UK)
____________________
Roro

   
Le 27/12/2020 à 12h37

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 696
Tenté ici avec succès : Utiliser les segments
:hi
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 01/01/2021 à 10h32

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 696
Rectifié le problème du "system primitive failed", c'est expliqué dans ce lien

Je n'ai pas avancé beaucoup sur les traces laissées par certaines fenêtres. J'ai triché rapidement en redessinant le fond juste après la fermeture de la fenêtre, mais on voit furtivement cette foutue trace colorée, c'est pas la bonne méthode.
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 01/01/2021 à 12h40

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2371
Citation:
Je n'ai pas avancé beaucoup sur les traces laissées par certaines fenêtres

"filedialog" dans le dossier--> plus simple et pas de trace.
____________________
Roro

   
Le 03/01/2021 à 10h24

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 696
J'ai démonté le programme instructions par instruction, il y en avait partout dans la maison de la cave au grenier et dans tous les tiroirs, mais j'ai réussi à tout remonter avec les sous-programmes qui vont bien, et ça semble fonctionner avec les bugs en moins. Pour le moment le programme ne fait rien de plus que dans la dernière version, je publierai le listing lorsque les dernières fonctionnalités seront implémentées, ou alors, au premier bug trop retors que je rencontrerai.

A priori, pas de filedialog prévu pour le moment, le système en place répondant au cahier des charges. Travailler en amateur non tenu à résultat permet de réinventer la roue, et donc d'y mettre le nombre de rayons qu'on veut et de la couleur qu'on veut, du moment qu'on en sait assez pour ne pas équiper un vélo d'une roue de locomotive, ou une locomotive, de roues de vélo. Parmi les garde-fous à installer, il faudra que j'avertisse l'utilisateur qu'il va sauvegarder en écrasant un fichier déjà présent s'il continue avec le même nom de fichier.

La trace fortuite ne se reproduit plus sur un ordi Windows plus puissant que mon eee-PC d'il y a dix ans. Du coup je ne sais pas si c'est la différence de performance ou la correction de mon code qui a supprimé le problème.

Mais quelle que soit la réponse, la base est saine, et on va pouvoir reprendre le chemin ;)
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 03/01/2021 à 15h29

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2371
Citation:
roues de vélo

Oui, mais si au final la roue est voilée et laisse des traces, ce n'est pas avantageux.
Mais bon, tu peux toujours intégrer au système un correcteur de dérive à base de surcompensateurs auto-régulés à double effet contradicteur.
Et retomber sur tes pattes comme le chat de mère Michel.
Il n'en reste pas moins que c'est plus compliqué en étant moins simple.
____________________
Roro

   
Jeux » Shoot'em up '80 et petits problèmes à résoudre  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie