Forum Liberty Basic France

Le 21/08/2013 à 22h00

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
Reprise du message précédent

Salut a tous ;) !!!

Bon, quelques petites nouvelles :

- le jeu avance, encore une fois, de nombreux bugs sont corrigés, j'ai réussi a faire en sorte a ce que le jeu ne tourne q'avec 8Mo de RAM !!! (un pic de 12 est a prévoir lors des combats mais je pense faire descendre cela en dessous de 10Mo d'ici peu ^^).
- la beta sera malheureusement retardé... cela fait bien 2 ans déjà que ce projet à vu le jour (le temps passe vite non ? ^^). Il sera reporté au 15 septembre, pourquoi ? ma copine vient de me kidnapper jusqu’à fin aout j'ai donc laisser mes lignes de codes a paris depuis une semaine et je ne les auraient pas avant le 1er septembre ;) ! (haaa les femmes ... ^^).

Bref, deux semaines de délais par rapport a 2 ans ce n'est rien non ? :)


Bonne soirée à tous ;) !

____________________
Yo !

MSN Web    
Le 21/08/2013 à 22h10

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Putain...C'est l'Arlésienne ce jeu. :miam
On va plus avoir une goutte de salive...à force de baver. :p
____________________
Roro

   
Le 21/08/2013 à 22h29

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
Croyez moi, cela en vaudra le coût ;) !

enfin dans la limite du raisonnable, je ne suis qu'un amateur à près tout ^^ !
____________________
Yo !

MSN Web    
Le 25/08/2013 à 15h09

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
>Re ^^

Je viens de refaire le site a partir duquel je vais distribuer les jeux (les .bas seront donnés ici). vous pouvez le voir ici (http://unlimitedfreewarecor.wix.com/unlimited-website).

Je ne peux malheureusement pas continuer de programmer tant que je suis kidnappé pas ma copine mais vous pouvez déjà voir certaines modifications dans la liste des modifications apportées au niveau du site.
De plus, j'ai mis en ligne une ancienne (mais récente par rapport a celles que vous avez déjà vu) version du jeu sur le site de nos amis anglophone =). c'est la 2.66 je crois ...
regardez et dite moi ce que vous en pensé ^^.


bref ca avance ;) !


Bonne journée :)



Edité par atomose Le 25/08/2013 à 15h10
____________________
Yo !

MSN Web    
Le 25/08/2013 à 23h49

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Hey, toi qui aime bien les bmp quand ils sont plusieurs ;)
Va donc jeter un coup d'oeil à "Annonces" j'y ai mis un convertisseur de la mort qui tue.
Et j'ai vérifié qu'il ne bousillait pas tes belles images...of course.
Dis voir ce que tu en pense.

Ah..Au sujet de ton site: Je crois que tu fais une erreur en mettant des pré-pré-pré annonces.
Avec en plus un bouton "Télécharger gratuit" qui envoie sur une fenêtre d'upload.
Tous ceux qui sont passés sur le site, puis qui y sont revenus, et encore revenus; risquent fort de se lasser.
je me doute bien que tu est pressé de voir les choses "en place".
Mais chaque chose doit être faite en son temps
Si tu veux y mettre de mes progs pour faire "patienter" tu peux;
mais cite ce site ci, ou mets un lien. C'est la coutûûme. :) Tchao ...à+
____________________
Roro

   
Le 27/08/2013 à 11h34

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
salut,

je viens de regarder ton programme dans annonce mais je ne comprend pas en quoi il fait passer de 25mo a 1mo... pour la compatibilité il suffit d'aller dans les propriété de l'éxécutable.
En suivant le readme cela me converti les images au format bmp mais ca ne comprèsse pas le dossier o_o. peut être ais je mal compris une étape ?

pour le site je suis de ton avis, je met les charrues avant les bœufs mais c'est dans le but d'avancer vite, au risque d'envoyer les visiteurs sur une page non fini.
Le site n'est pas connu pour le moment, a par vous et un lien sur le forum anglosaxon il reste caché pour le reste du monde ^^.
pour parrer à ce problème, dici la fin de la semaine les boutons "téléchargement" conduirons réellement à un téléchargement (ce sera la chartre de béta test, en attendant que le jeu soit en téléchargement).

Voila, je go a la playa, cyao ;)
____________________
Yo !

MSN Web    
Le 27/08/2013 à 11h56

Administrateur

Groupe: Administrateur

Inscrit le: 25/09/2010
Messages: 362
Le principe, c'est que JB n'accepte que des fichiers Bitmap (.bmp), or, ce sont des fichiers images non compressé, donc très gros. Ce que propose Roro, c'est un petit logiciel qui compresse tes images .bmp en quelque chose de plus léger, et lorsque tu as besoin de l'image dans JB, tu la décompresse pour retrouver ton .bmp.
Le logiciel de Ror te permet de convertir des images .bmp en image .jpg, beaucoup plus légères. Problème (de mon point de vu), le format JPEG est un format destructif, tes images seront de moins bonne qualité.
Du coups, je code actuellement un petit logiciel très leger (<1Mo) qui permet de compresser les images dans un format non destructif. En plus, il fonctionne avec tout, pas seulement avec les images. Bref, je vous tiens au jus sur le topic de roro.

Jag
____________________
J'ai toujours raison ! Sauf quand j'ai tort ...

Web    
Le 27/08/2013 à 12h49

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Atomose, le bazar s'appelle pixillion, avec le "pix" qui nous suggère que c'est pour les images;
Si tu suis le "read me" Tu compresse toutes les images de ton dossier 'bmp" en une seule passe.
Quand il et en jpg, tu l'envoie sur le forum.
Le gars prends ton zip plus le convertisseur, et fait la manip inverse.

En fait j'ai fais le con avec mon read-me. Il suffit de choisir "même dossier" comme destination.

Mais si Jag nous fait un compresseur (et décompresseur; parce que c'est le décompresseur qu'il serait intéressant d'inclure dans le code du prog, pour rendre la manip transparente)
Et ben là...Je peux dire qu'il va m'épater.... :p
____________________
Roro

   
Le 02/09/2013 à 19h59

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Salut Atomose,
Alerte au bug dans "Eternal-Quest": Quand le personnage passe le pont de droite à gauche, il sort de la carte, et la carte ne change pas...(carte 22)
Mon bonhomme s'est perdu dans le bois...! :d ;)
Il manque aussi une limite "Nord" 3/4 droite dans une carte. la 10 ou la 20
Et le code ? Il top secret ? :)
____________________
Roro

   
Le 02/09/2013 à 20h59

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
lol ! Vous tester une version non achevé ^^ ! Je l'ai précisez (non?) sur le forum des anglais. La version que tu as n'a de limite que pour les cartes 1-5(ou 6) tu risques donc de trouver pas mal de bug dessus :p !

Je vous poste la version béta fini (normalement...) le 15 septembre comme convenu ;) ! Je vous donnerais le code ici. En attendant il me reste encore pas mal de truc à régler :(. Pour vous dire je suis actuellement aux limites de la carte 9. Enfin en même temps il ne me reste que les limites à faire XD.
Donc ne vous inquiété pas au pire vous pourrez jouer à super man sur les dernières cartes si je n'ai pas fini à temps. :)

Ha et aussi ... vous remarquerez que la version que je vous posterais sera très très stable :) !

Je retourne à mes lignes ;) !

Merci à toi pour tes observations en tout cas :)


Version actuelle 2.67.1



Edité par atomose Le 02/09/2013 à 21h02
____________________
Yo !

MSN Web    
Le 02/09/2013 à 23h47

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Hey, si tu postais ton code, on (je) pourrais y jeter un oeil, et éventuellement m'y intéresser.
Je ne suis pas Cassiope, et ne risque donc pas de te le transformer en centrale atomique. :lol
Mais ce n'est cependant pas sans risques; vu que je verrais bien les parties "textes" se muer en "actions", et jouer un peu avec " l'espace/temps". (au prix bien sûr de quelques centaines de bmp's supplémentaires Lol!)
Que nous pourrons compresser avec le super: "Maxi-Jag-Minimiseur".
En tous cas bravo pour l'installeur :top J'espère juste qu'il ne touche pas au registre.
____________________
Roro

   
Le 03/09/2013 à 12h54

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
il ne touche absolument pas au registre (je crois XD).

Je vous poste le code actuel pour vous donner une idée de l'avancement du projet.
Je vous met le lien de téléchargement d'une version stable pour la tester :p ! je suis tellement gentil que je vous passe aussi les éditeurs que j'ai fait et avec lesquels je travail pour avancer plus vite ^^.

attention, ne marche pas sous JB !

amusez vous bien ;)


lien : https://mega.co.nz/#!aA0CHbyA!UWiqxk_60fiy2pOhxh8ZG3KGPSBB_S_wt2YkQLkM5Mw

____________________
Yo !

MSN Web    
Le 03/09/2013 à 15h54

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Un sacré boulot :top
Je vois que dans cette version tu n'a pas adopté l'éditeur de carte de Cassiope, avec son système de test des limites.
Je reconnais que c'est relativement complexe, mais le gain au niveau écriture et surtout la souplesse que cela apportait aurait mérité que tu le conserve.
Je pense que tu a "décroché" quand il a intégré le déplacement "souris".
Et c'est vrai que ça faisait beaucoup d'évolutions en trop peu de temps.
Mais bon, le principal, c'est que tu garde la main.
Bonne suite... ....à+.
____________________
Roro

   
Le 03/09/2013 à 16h59

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Dis-donc... Tes "Notices" qui déboulent au milieu de la map, ça fait un peu "tâche".
Dans :[DQop1] ... Mets donc une apostrophe devant cette horrible notice, et teste ça:
Approche de"Q1" du bas vers le haut, en avançant "pas à pas"

Code VB :
 
 
[DQop1]
DQop1 = 1
' ' confirm "Tiens, un inconnu .........
#3b,"color yellow;backcolor black"
#3b,"place 760 200"
#3b,"\ HOUHOUHOU"
if choix$ = "yes" then notice "Quête accépté !"
wait
 
 


C'est quand même plus sympa.... Non ?
____________________
Roro

   
Le 03/09/2013 à 17h16

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Et là, tu va me dire: "Ouais.. Et je fais comment pour avoir la réponse ?" :d
Et je te réponds:
Comme des réponses par "oui" ou par "non", il doit y en avoir plus d'une dans ton jeu.
Tu mets quelque part deux "faux-boutons"
"Faux boutons": Et oui, parce que un bouton envoie à un endroit et un seul.
Le faux-bouton, sera un endroit réactif au clic, que tu testera (comme tu sais le faire if x=...and y=...) dans une boucle munie d'un "scan".
Boucle que tu mettra partout où tu attend une réponse.
Que demande le peuple ?...... ;)

Autre chose: Quand on veut quitter; c'est peut-être pas la peine de demander 4 fois si on est sûr, si on ne voudrait pas aller au menu, ou ailleurs; si on a pas un petit creux, une envie de pisser......ext
La croix de fermeture de la fenêtre; elle doit fermer. Une confirmation est suffisante, et souvent superflue.
____________________
Roro

   
Le 03/09/2013 à 17h48

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Et si tu veux pouvoir mettre ces faux -boutons où tu veux, les faire apparaître et disparaître;:
Tu les mets en sprites, tu fait un sprite "pointeur" ; comme a fait Cassiope dans son DSRV Submarine .
Et tu teste avec "spritecollides.
ça , s'est si tu veux rester "souris". Sinon, il y a le test "clavier": y/n.
____________________
Roro

   
Le 03/09/2013 à 19h42

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
et ben, beaucoup de réponses ^^ pk ne pas faire une seul message ? :p

Pour la quête Q1 le notice est la pour dépanner pour le moment ^^. Mais merci pour ce que tu as donné je vais le tester :).
Ne t'inquiète pas une fois les limites finis je peaufinais les détails, comme tu l'as souligner c'est beaucoup de boulot ce rpg ^^'... on dirait pas forcement lorsqu'on le lance mais ça commence à en faire des lignes ! d’ailleurs petite anecdote :
- faite copier (le code directement, pas le fichier) et vous aller voir un message normalement XD !

Pour le système des limites ça peut paraître dure a comprendre mais je suis resté avec mon système par ce que justement il me prend moins de temps à faire o_o, je m'explique :
j'avais fait une version souris avant, qui marchait et je faisais les limites avec l'éditeur que l'on ma gentiment donner :). mais ce système est bien que pour la version souris, pour des limites avec le clavier je m'en sort bien mieux avec mes lignes de limites (je sais c'est illogique ...). Donc au final j'ai continué ma méthode, bien que celle de casio est très bien ^^. (je croyais avoir expliqué cela en juillet non ?)

Je repart à mes lignes ;) !!

ps : sur la version que tu as le combat contre le voleur n'est pas activer ! si tu veux t'amuser avec tu as juste a rajouter 1 bouton 'attaquer' et le brancher a la [???] adéquate ^^ ! ( c'est pas encore fait pck je suis entrain de modifier l'interface pour le moment ;) )
____________________
Yo !

MSN Web    
Le 04/09/2013 à 16h27

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
Deux petites questions :

Comment ajouter une vidéo comme une music ? (Je sais plus si je vous lais déjà demander ...)
Roland, le text que tu fait apparaître dans Q1, comment faire en sort qu'il s'efface ensuite ? Pck garder cela sur l'écran ou si on écrit un texte assez long:( ... Cls ne marche pas XD

Merci a vous ;) !
____________________
Yo !

MSN Web    
Le 04/09/2013 à 17h50

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
Chez moi, il disparaît quand je personnage sort de la zone de détection.
Mais ce que je ne comprends pas, c'est qu'il ne réapparaît pas si on y reviens.
Soit dit en passant, je me demande comment tu fais pour t'y retrouver dans ton code, avec toutes ces ouvertures/fermetures de fenêtres.
Pourquoi ne pas simplement changer le fond (en "background" ou en "bmp") et travailler dans la même fenêtre
Avec tous ces branchements; c'est un vrai labyrinthe.
Enfin...Chacun code à sa façon.; mais là, c'est vraiment "touffus"....Normal...C'est une forêt Lol !
____________________
Roro

   
Le 05/09/2013 à 10h16

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
Ho, ne Tkt pas pour cela j'ai refait le système de quête et ça bug pu ^^. De plus il y avait certains autre bugs qui rendait le jeu injouable ={. Enfin c fait ^^ et y'a pu de notice ;).

J'ai vu que l'on a dépassé les 14000 vus 0_0 !! A 20000 on se paye un verre ? XD


Je sais que le code peut paraître bordélique (je le trouve aussi) mais pour le moment je fait le gros du travail, ensuite jaffinerais tout ça :). Faut pas croire mais le code est de moins en moins bordélique de versions en versions ^^.

J'y retourne, je vais vous passer d'ici demain (ou ce soir) une version plus fixe et jouable ^^.

++
____________________
Yo !

MSN Web    
Le 08/09/2013 à 11h56

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
NOTE: Ces deux codes sont à utiliser avec le dossier "bmp" du jeu "Eternal Quest": E_Q 2.67.1 d'Atomose.
Dans lequel, il faut copier sur place: perso2z; pour créer: perso3d; perso3q; perso3s; et: perso3z. Qui manquent (pour éviter de toucher au code)
Il est possible de virer tout le reste puisque seuls les persos servent pour le test.
Evidemment; garder le dossier map.
Salut Atomose,
J'ai tellement transpiré sur ton code, que j'ai repris celui de Cassiope; en y faisant quelques modifs.
Les modifs générales:
-- J'ai viré toutes les subs (sauf les prises de côtes.) Les sub's, c'est comme le Diable: Puissant, mais gare aux coups de fourches !
-- Remplacé: "Graphics" par: "Window" + "Graphicbox" (moins capricieux)
-- Séparé la partie "Editeur" de la partie "Test". (avoir les deux codes côte à côte)
-- Remplacé le tableau numérique par un tableau "chaîne". Ce qui porte le nombre d'évenements possibles, de: 9 à: 256 - (2ou3) ("x"; "; et: " ".)
-- Ajouté une prise de côtes en unité: N° de case. ( clic droit), et en pixels (clic du milieu)
Modifs "Editeur":
-- Ajouté un "Tableau de bord" (fenêtre séparée)
--Au lancement on choisi une map directement dans le dossier.
-- Au "Save" le fichier "Limites" est envoyé dans le dossier des maps, avec le même nom que sa map.
--Pour annuler les erreurs: Entrer "x" dans: Case Value et valider ("x" étant les parties "libres".
Modifs Partie "Test":
-- Remplacé: "Double clic" par: "Simple clic".
-- Introduit Affichage textes
-- Ajouté un bouton "Affichage limites"
-- Ajouté une prises de côtes idem qu'éditeur.
-- Ebauche changement de map.
ça, c'est l'EDITEUR:
Code VB :
 
  'EDITEUR
  nomainwin
      [retour]
      dim info$(10,10)
     FILEDIALOG "Open", DefaultDir$+"\bmp\map\*.bmp", Filename$ '--ci-dessous: grosse magouille
         xj= instr(Filename$, "map")+3 '----pour extraction du nom sec
         charge$ = right$(Filename$,len(Filename$)-xj) '---arrachage de ce qu'il y a devant
         map$ = left$(charge$,len(charge$)-4) '---arrachage de ce qu'il y a derrière

    WindowWidth = 880
    WindowHeight = 538+5
    UpperLeftX=int((DisplayWidth-WindowWidth)/1.5)
    UpperLeftY=int((DisplayHeight-WindowHeight)/2)
    Global ncx, ncy, lc, SpriteCourant, caseValue
    Global optab
    GRAPHICBOX #3b.map, 0, 0, 870, 538
    if op3b=1 then [pass3b]
    open "Editeur de Zones Réactives " for window as #3b
    if map$="" then [Quit]
    op3b=1
    [pass3b]
    #3b "trapclose [Quit]"
    #3b.map, "down"
    #3b.map, "setfocus"
    #3b.map, "When rightButtonUp Cotecase"' côtes en cases
    #3b.map, "When middleButtonDown Cotepix" 'côtes en pixels
    #3b.map "when leftButtonDown [SimpleClick]"
    #3b.map, "when leftButtonMove [SimpleClick]"    'pour tracer et enregistrer les limites.
    #3b.map, "when characterInput Touches"        'pour déplacer le personnage avec les flêches. la même flêche l'arrête.

    #3b.map, "font Comic_Sans_MS 8"
    #3b.map, "home; posxy CenterX CenterY"
    '--------------------------------------- Init Var -----------------------
    lc = 15    'dimension d'une case en pixels
    Gwidth = CenterX * 2
    Gheight = CenterY * 2
    dpx(1) = 0  :dpx(2) = 1 :dpx(3) = 0 :dpx(4) = -1
    dpy(1) = -1 :dpy(2) = 0 :dpy(3) = 1 :dpy(4) = 0    ' incrément de direction , pour la variables tableau
    ncx = int(Gwidth/lc)+1   'nbre de case en x
    ncy = int(Gheight/lc)+1   'nbre de case en y
    dim cas$(ncx,ncy) 'tableau chaine de toute la map
    caseValue$ = "z" ' valeur de la limite par défaut = mur.

    gosub [charge]
        loadbmp "MAP", "bmp\map\"+map$+".bmp"  ' LA CARTE à éditer.
    gosub [grid]
    gosub [montreLimites]
    goto [tabbord]
wait '----
[montreLimites]
    #3b.map, "backcolor blue; color yellow"
    for y = 1 to ncy
        for x = 1 to ncx'----if cas$(x,y)<>"x"-->si différent de "x" on affiche
            if cas$(x,y)<>"x" then #3b.map, "place ";(x*lc)-lc/2-2;" ";y*lc-3;" ;|";cas$(x,y)
        next '----"x" Partie libre (ça ne marchait pas avec: "", ni avec: " ")
    next
    #3b.map,"flush;discard"
return
 
[SimpleClick]
    #tab.va, "!contents? value$"
    caseValue$=value$
    mx = int(MouseX / lc)+1
    my = int(MouseY / lc)+1
    if mx>0 and mx<ncx and my>0 and my<ncy then
        cas$(mx,my) = caseValue$
       #3b.map, "backcolor blue; color blue"
       #3b.map, "place ";(mx-1)*lc+2;" ";(my-1)*lc+2
       #3b.map, "boxfilled ";mx*lc-1;" ";my*lc-1
       #3b.map, "color yellow"
       #3b.map, "place ";(mx*lc)-lc/2-2;" ";my*lc-3;" ;|";cas$(mx,my)
    end if
    #3b.map,"flush;discard"
wait
[grid]
    #3b.map, "drawbmp MAP 0 0" '----Déplacé d'en haut
    #3b.map, "color darkgray"
    for x = 1 to ncx
        #3b.map, "place ";x*lc;" 0"
        #3b.map, "goto ";x*lc;" ";ncy*lc  'traits verticaux de la grille
    next
    for y = 1 to ncy
        #3b.map, "place 0 ";y*lc
        #3b.map, "goto ";ncx*lc;" ";y*lc  'traits horizontaux de la grille
    next
    #3b.map,"flush;discard"
return
wait
[charge]
     redim cas$(ncx,ncy) 'on vide l'ancien tableau
     file$=map$+".txt"
    if fileExist(DefaultDir$+"\bmp\map\", file$) then
        open "bmp\map\"; file$ for input as #grid
        for y=1 to ncy
            for x=1 to ncx
            if eof(#grid) <> 0 then sortgrid=1: exit for 'test de fin de fichier
                LINE INPUT #grid, cas$(x,y)
            next
            if sortgrid=1 then exit for '2 for/next--> 2 exits par flag: "sortgrid"
        next
        close #grid
    else
        notice " "+chr$(13)+"Pas de fichier : "+ map$+".txt'...!"+chr$(13)+"Il faut donc traçer les limites de cette carte..."
        for y=1 to ncy '---on rempli la map de "x" (partie libre)
            for x=1 to ncx '---ce qui permet d'effacer (en remplaçant par: "x")
                cas$(x,y)="x"
            next
            if sortgrid=1 then exit for
        next
    end if
return
[save]
    filesave$= map$+".txt"
        confirm "Enregistrer les limites de cette carte ?"; answer$
        if answer$ = "yes" then
            open "bmp\map\"; filesave$ for output as #grid
            for y = 1 to ncy
                for x = 1 to ncx
                    #grid, cas$(x,y)
                next
            next
            close #grid
            notice "Enregistrement"+chr$(13)+"limites de la carte enregistrées dans le fichier"+chr$(13)+map$+".txt"
        end if
        goto [Quit]
wait
[tabbord] '----------------------- Tableau de Bord -------------------------
    if optab=1 then [passtab]
    WindowWidth = 200
    WindowHeight = 130
    UpperLeftX=20
    UpperLeftY=100
    BUTTON #tab.cart, "Carte", [carte], UL, 5, 10, 50, 20
    BUTTON #tab.grio, "Grid On", [gridon], UL, 60, 10, 60, 20
    BUTTON #tab.limo, "Limit On", [limiton], UL, 125, 10, 60, 20
    BUTTON #tab.casva, "Case Value", [caseval], UL, 10, 40, 70, 20
    textbox #tab.va, 90, 40, 30, 20
    BUTTON #tab.des, "Destroy", [destroy], UL, 10, 70, 50, 20
    BUTTON #tab.sav, "Save Limites Carte", [save], UL, 80, 70, 110, 20
    open "Tableau de bord" for window_nf as #tab
    [passtab]
    optab=1
    print #tab, "trapclose [Quittab]"
    #tab.va, caseValue$
wait '------------
[limiton] '----------------- Et.... Ses boutons ---------
    gosub [montreLimites]
wait
[carte]
    #3b.map, "drawbmp MAP 0 0"
wait
[gridon]
    gosub [grid]
wait
[destroy]
   kill$=map$+".txt"
   confirm "Vous allez Détruire toutes les données";reponse$
   if reponse$="no" then wait
   if reponse$="yes" then
      if fileExist(DefaultDir$+"\bmp\map\", kill$) then
         kill DefaultDir$+"\bmp\map\"+kill$
         #3b.map, "fill black"
         goto [retour]
      else
         notice "Le fichier: "+kill$+" n'existe pas encore."
      end if
   end if
wait
 
function fileExist(path$,filename$) ' gestion des fichiers (note: infos(10,10) en tête de code)
    files path$,filename$, info$()
    fileExist = val(info$(0, 0))
end function
Function text(x,y,msg$) '------fonction d'affichage de textes
    #3b.map,"color yellow;backcolor black"
    #3b.map,"Place ";x;" ";y;";|";msg$
End Function
 Sub Cotecase handle$, xClick, yClick  '----prise de cotes en cases
    #3b.map, "color yellow;backcolor black"
    xcase=int(xClick/lc)+1 'coord en N° de case
    ycase=int(yClick/lc)+1
    Print text(xClick,yClick,"xc = "+Str$(xcase))
    Print text(xClick,yClick+15,"yc = "+Str$(ycase))
 End Sub
 Sub Cotepix handle$, xClick, yClick  '-----prise de cotes en pixels
    #3b.map, "color yellow;backcolor black"
    xcase=int(xClick/lc)+1 'coord en N° de case
    ycase=int(yClick/lc)+1
    Print text(xClick,yClick,"xp = "+Str$(xClick))
    Print text(xClick,yClick+15,"yp = "+Str$(yClick))
 End Sub
wait
[Quittab]
    close #tab: optab=0
wait
[Quit]
    if optab=1 then close #tab:optab=0
    if map$<>"" then unloadbmp "MAP"
    close #3b
    END
 
 
 
 

Et ça, c'est la fenêtre de TESTS
Code VB :
 
 ' FENETRE de TESTS
 nomainwin
    WindowWidth = 880
    WindowHeight = 538+5
    UpperLeftX=int((DisplayWidth-WindowWidth)/1.5)
    UpperLeftY=int((DisplayHeight-WindowHeight)/2)
 
    'Global ncx, ncy, lc, SpriteCourant', caseValue
    Global ncx, ncy, lc, SpriteCourant', caseValue$

    lc = 15    'dimension d'une case en pixels

    GRAPHICBOX #3b.map, 0, 0, 870, 538
    BUTTON #3b, "Lim", [montreLimites], UL, 5, 10, 40, 20
    open " Fenêtre de Test" for window as #3b
    #3b.map, "trapclose Quit"
    #3b.map, "down"
    #3b.map, "setfocus; when leftButtonDown [DoubleClick]"
    #3b.map, "When rightButtonUp Cotecase"' côtes en cases
    #3b.map, "When middleButtonDown Cotepix" 'côtes en pixels
    #3b.map, "font Comic_Sans_MS 8"
 
    #3b.map, "home; posxy CenterX CenterY"
    Gwidth = CenterX * 2
    Gheight = CenterY * 2
    dpx(1) = 0  :dpx(2) = 1 :dpx(3) = 0 :dpx(4) = -1
    dpy(1) = -1 :dpy(2) = 0 :dpy(3) = 1 :dpy(4) = 0    ' incrément de direction , pour la variables tableau
    ncx = int(Gwidth/lc)+1   'nbre de case en x
    ncy = int(Gheight/lc)+1   'nbre de case en y

    ' dim cas(ncx,ncy)  'variable tableau de toutes la map.
     dim cas$(ncx,ncy)
    dim info$(10,10)
 
    indice=2
    pCX = 14  ' position initiale du personnage (en cases)
    pCY = 18
[restart]
    nom$="maphum"+str$(indice)
    map$=nom$+".bmp"
    lim$=nom$+".txt"
 
    gosub [charge]
    loadbmp "MAP", "bmp\map\";map$
    #3b.map, "drawbmp MAP 0 0"
    print #3b.map, "background MAP"
 
    sprites$ = "perso1d perso2d perso3d perso4d perso1s perso2s perso3s perso4s "+_
               "perso1q perso2q perso3q perso4q perso1z perso2z perso3z perso4z"
    for s = 1 to 16
        loadbmp word$(sprites$,s), "bmp\"+word$(sprites$,s)+".bmp"
    next
    #3b.map, "addsprite perso1 perso1z perso2z perso3z perso4z"  'création des 4 sprites pour chaque futures direction de déplacement...
    #3b.map, "addsprite perso2 perso1d perso2d perso3d perso4d"
    #3b.map, "addsprite perso3 perso1s perso2s perso3s perso4s"
    #3b.map, "addsprite perso4 perso1q perso2q perso3q perso4q"
 
    for SpriteCourant = 1 to 4
        #3b.map, "spritexy perso";SpriteCourant;" ";pCX*lc;" ";pCY*lc   'place tous les sprites du personnage là.
        #3b.map, "cyclesprite perso";SpriteCourant;" 1"
        #3b.map, "spritevisible perso";SpriteCourant;" off"
    next
    SpriteCourant = 3
    #3b.map, "spritevisible perso";SpriteCourant;" on"
    #3b.map, "drawsprites"   'affiche le sprite courant.
wait
[DoubleClick]
    mX = MouseX
    mY = MouseY
    icp = 6   'incrément de déplacement en pixels.
    #3b.map, "spritexy? perso";SpriteCourant;" cursX cursY"   'coordonnées actuelles du personnage   <------
    dir = direction(cursX,cursY,mX,mY)    'fonction qui donne la direction du déplacement... destinée à utiliser le sprite adéquat.
    for s=1 to 4 : #3b.map, "spritevisible perso";s;" off" : next
    SpriteCourant = dir
    #3b.map, "spritexy perso";SpriteCourant;" ";cursX;" ";cursY
    #3b.map, "spritevisible perso";SpriteCourant;" on"  'ne montre QUE le sprite concerné par la direction choisie.
    do
        #3b.map, "spritexy? perso";SpriteCourant;" cursX cursY"
        cx = int(cursX/lc)+1             'position du sprite exprimé en n° de case pour la variable tableau
        cy = int(cursY/lc)+1
        'if cx+dpx(dir)>0 and cx+dpx(dir)<ncx and cy+dpy(dir)>0 and cy+dpy(dir)<ncy and cas(cx+dpx(dir),cy+dpy(dir)) = 0 then
        if cx+dpx(dir)>0 and cx+dpx(dir)<ncx and cy+dpy(dir)>0 and cy+dpy(dir)<ncy and cas$(cx+dpx(dir),cy+dpy(dir)) = "x" then
            nx = cursX + dpx(dir)*icp
            ny = cursY + dpy(dir)*icp
            #3b.map, "spritexy perso";SpriteCourant;" ";nx;" ";ny      'cheminement du sprite... tranquilou...
            #3b.map, "drawsprites"
            'call pause 90
            temp=90
            gosub [pause]
        else
            sortir = 1
        end if
        if cas$(cx+dpx(dir),cy+dpy(dir)) = "A" then
           indice =indice+1 'incrémente le N° de la map
           if indice=23 then indice =2
           pCX = 39: pCY = 2 ' replace perso (unité= N° de case)
           goto [restart]
        end if  '----------NOTE: LES CONDITIONS CI-DESSOUS NE FONCTIONNENT QUE: dans la mesure...
  '§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
        if cas$(cx+dpx(dir),cy+dpy(dir)) = "B" then notice "Prendre des congés" ' ...où le fichier de données (limites) existe.
        if cas$(cx+dpx(dir),cy+dpy(dir)) = "E" then Print text(379,124,"Dynamite!!") 'Et ne réagirons, que pour la carte comportant les données
        if cas$(cx+dpx(dir),cy+dpy(dir)) = "2" then Print text(618,130,"Tu marche dans les cailloux!")
        if cas$(cx+dpx(dir),cy+dpy(dir)) = "3" then Print text(590,175,"Tu va te casser la gu..le!")
  '/////////////////////////////////////////////////////////////////////////////////////////////////
        if (dir = 2 and nx >= mX) or (dir = 4 and nx <= mX) or (dir = 1 and ny <= mY) or (dir = 3 and ny >= mY) then sortir = 1  'on est arrivé en l'endroit du clic de souris...
    loop until sortir
    sortir=0
wait
[montreLimites]
    #3b.map, "backcolor blue; color yellow"
    for y = 1 to ncy
        for x = 1 to ncx
           ' if cas(x,y) then #3b.map, "place ";(x*lc)-lc/2-2;" ";y*lc-3;" ;|";cas(x,y)
            if cas$(x,y)<>"x" then #3b.map, "place ";(x*lc)-lc/2-2;" ";y*lc-3;" ;|";cas$(x,y)
        next
    next
    #3b.map,"flush;discard"
wait
[charge]
     file$=lim$
    if fileExist(DefaultDir$+"\bmp\map", file$) then
       redim cas$(ncx,ncy)
        open "bmp\map\";file$ for input as #grid
        for y=1 to ncy
            for x=1 to ncx
            'if eof(#grid) <> 0 then sortgrid=1: exit for 'test de fin de fichier
                LINE INPUT #grid, cas$(x,y)
            next
            if sortgrid=1 then exit for
        next
        close #grid
    else
        c$=" "+chr$(13)+"La Carte: "+ map$+" n'a Pas de fichier 'Limites' Associé..."+chr$(13)
        c$=c$+" Il faut en Créer un à l'aide de l'Editeur"
        'notice " "+chr$(13)+"Cette Carte n'a Pas de fichier 'Limites' Associé..."
        notice c$
    end if
return
 
function direction(dx,dy,ax,ay) 'fonction qui donne la direction du déplacement... destinée à utiliser le sprite adéquat.
    dirX = ax - dx
    dirY = ay - dy
    if abs(dirX) < abs(dirY) then sens = 1 else sens = 2   '1 = vertical  2 = horizontal
    select case
    case sens = 1 : if dirY > 0 then direction = 3 else direction = 1   'direction à prendre: 1 = HAUT,   3 = BAS
    case sens = 2 : if dirX > 0 then direction = 2 else direction = 4   '                     2 = DROITE, 4 = GAUCHE
    end select
end function
Function text(x,y,msg$) '------fonction d'affichage de textes
    #3b.map,"color yellow;backcolor darkgreen"
    #3b.map,"Place ";x;" ";y;";|";msg$
End Function
[pause]
    timer temp, [suit]
    wait
    [suit]
    timer 0
return
 Sub Cotecase handle$, xClick, yClick  'prise de cotes en cases
    #3b.map, "color yellow;backcolor black"
    xcase=int(xClick/lc)+1 'coord en N° de case
    ycase=int(yClick/lc)+1
    Print text(xClick,yClick,"xc = "+Str$(xcase))
    Print text(xClick,yClick+15,"yc = "+Str$(ycase))
 End Sub
 Sub Cotepix handle$, xClick, yClick  'prise de cotes en pixels
    #3b.map, "color yellow;backcolor black"
    xcase=int(xClick/lc)+1 'coord en N° de case
    ycase=int(yClick/lc)+1
    Print text(xClick,yClick,"xp = "+Str$(xClick))
    Print text(xClick,yClick+15,"yp = "+Str$(yClick))
 End Sub
function fileExist(path$,filename$)
    files path$,filename$, info$()
    fileExist = val(info$(0, 0))
end function
sub Quit handle$
    unloadbmp "MAP"
    sprites$ = "perso1d perso2d perso3d perso4d perso1s perso2s perso3s perso4s "+_
               "perso1q perso2q perso3q perso4q perso1z perso2z perso3z perso4z"
    for s = 1 to 16
        unloadbmp word$(sprites$,s)
    next
    close #3b
    END
end sub
 
 
____________________
Roro

   

 |  |

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