In DrawY subroutine, why are you filled with zeros line to replace? Fill(r1*12+L6,12,0 Vertical + or Vertical - commands are not supposed to do it ?
(I already try without this line, I know it's needed to make it work, but I don't understand why)
EDIT : ok I see, only horizontal +/- resets bits.
EDIT2 : after 4 hours, I understand all.. except that end of line : {r3}+12->r3 I think it's supposed to do r3+12->r3 but how it is it possible it works ?
N'oublie pas que c'est du pixelmapping, donc au bit près. T'as raison sur un point, on se casse la tête pour faire un truc non optimisé. Si tu regarde le smoothscrolling de runer, il y a exactement la même routine (DrawR) qui fais ce que l'on cherche, mais dans l'autre sens... à exploiter.
While1 DispGraph IfgetKey(1) !If Y-1<~128 Y-- Vertical- 63:DrawY() End End IfgetKey(2) If X +1→X Horizontal+ .0:DrawC() DrawL() End End IfgetKey(3) !If X-1<~160 X-- Horizontal- .95:DrawC() DrawR() End End IfgetKey(4) If Y +1→Y Vertical+ 0:DrawY() End End EndIfgetKey(15) Return
Le but de la variable A est une manière comme une autre pour ne pas sauvegarder l'écran à chaque boucle, mais seulement quand on commence à presser les touches.
Après la méthode que je pensais était d'utiliser un bitmap trafiqué de L6 dans l'appvar via une astuce simple : en utilisant {L6-1} et {L6-2} pour y rentrer des coordonnées. Je n'ai pas trouvé exactement à quoi servaient ces deux octets, mais ils ne m'ont provoqué aucun bug à l'extinction du programme. Au pire on peut restaurer les valeurs qui étaient en début de programme, mais c'est pas le plus important (moi elles était à 0).
Après je n'ai pas tout à fait idée de la manière à utiliser car la commande bitmap est faite pour afficher sur un buffer de 768 octets, donc est ce que cela pourrait marcher ? (il faudrait poser la question à runer :p )
EDIT : Après discussion avec runer, je pense qu'on a trouvé une solution pour - éditer l'appvar via les explosions du jeu, en fait il faudra faire nos propres automates cellulaire qui modifient directement l'appvar. Il en faudra donc pour les explosions et les flammes (en gros un simple cercle ne suffit pas :'( ). De cette manière on édite même en dehors de l'écran, donc on peut faire pleins de belles explosions. - pour éditer l'appvar via l'éditeur de map, le plus "simple" serait de copier l'écran vers l'appvars au bon endroit. De cette manière on peut faire "annuler action" mais l'éditeur empêchera d'éditer plus que l'écran. Le code que je pensais étais quelque chose comme Bitmap(0,0,L6,APPV,1), et ce en modifiant au fur et à mesure les 64 lignes de l'écran vers l'appvar. Un code prototype :
:getCalc("appvAPPV")=>APPV :For(I,0,63) :96*256+1=>{I*12-2+L6}r :.Après comme on affiche l'appvar directement sur l'écran on verra pas les trucs modifiés :Bitmap(0,0,I*12+L6,I+X*32+Y+APPV,1) :End
C'est aussi à envisager... par contre il y a de grandes chances qu'on laisse la dernière MAP utilisée dans la RAM. En gros à chaque nouvelle partie on déplace la MAP choisi vers cet MAP temporaire (c'est à ce moment qu'il faut décompresser l'archive).
Seul l'éditeur de MAP pourra copier la MAP temporaire vers une appvars archivé (+ compression de l'image). Donc lorsqu'on édite une map on édite tout le temps la map temporaire (dans la RAM). De même lorsqu'on joue ce sera tout le temps la la map temporaire qui sera détruite.
@Hayleia : je viens de penser à un truc pour une option "annuler action". En gros on sauve l'écran dans l'appvar à un seul moment, c'est quand on appuie sur une touche pour déplacer ou dessiner ou faire apparaître le menu (une option que je viens d'inventer :p). Dans un code :
If touches de déplacement ou autre :If A :copier écran dans l'appvar :0=>A :End :.code si touches de déplacement ou autre :Else :1=>A :EndJe vais tester un truc pour copier l'écran dans l'appvar. (pas sûr que ça marche)
En fait on compte faire des bitmaps complètes soit 256*256 pixels, soit 512*128 pixels ou soit 1024*64 pixels. Donc l'éditeur représente à échelle réel la map, même si pour l'instant on ne peut pas sauvegarder, ça donnera un aperçu de la taille des maps.
Après on a peut-être pas dis beaucoup de choses sur l'éditeur : pourquoi l'éditeur maintenant ? On commence par ça pour pouvoir tester toute sorte de map assez rapidement pour la suite du projet. De plus il y a certains défis techniques à réaliser avec les map, notamment la sauvegarde de l'écran dans celle ci. Il faut qu'on soit fixé rapidement sur la vitesse que cela met. Ensuite on compte dans un future un peu lointain faire un générateur de map, intégré dans l'éditeur. Pour ceux qui jouent un peu aux worms, les générateurs de map font vraiment partie des trucs sympa du jeu.
Je m'y mettrai à fond à la fin de mon back-blanc (ou avant ? ) mais je dois avouer qu'hayleia fait plutôt du très bon travail.
Génial, par contre c'est bizarre que la routine de cercle qu'utilise l'axiom ne ressemble pas à un cercle mais plus à un carre lorsque l'échelle est petite... O_o
Sinon, si tu veux comprendre pourquoi j'attends celui en français, regarde un peu la tête de celui en anglais... La mise en page n'est pas bien encourageante. (ça vaut pas le tien sur le site du zéro )
Un peu comme la documentation de l'Axe Parser quand j'ai commencé à apprendre. Dans un an on pourrait peut-être voir un nouveau tutoriel sur le SdZ par persalteas.