18639
GAME -> Reflexion
© _Public_Domain_ (2021)
 
 
 
Dokoban
cpc
 
 

Last Update : Thursday 21 April 2022 at 21 h 44
 
screenshot
screenshot
screenshot
screenshot
screenshot
 
 

screenshot
CTM644 Colour Monitor
screenshot
GT65 Green Monitor
 

Keywords

INFOS

- CATEGORIES -
GAME -> Reflexion               
- NUMBER OF PLAYERS -
1 player
- DESCRIPTION -

Le doc n'en fini plus de griller des moniteurs avec son Atari ST et son GEM vert... Pour les réparer il doit donc les emmener à différents endroits afin de les brancher à un Amiga ce qui semble leur redonner une seconde jeunesse...

- MISC -

Participation au "10 Liners competition 2022", catégorie "Expert's rating EXTREM-256" :
Classé 1/17 avec 9.93/10 points.
Mention 2/5 par "PUBLIC'S CHOICE"

Le listing est 100% BASIC mais utilise une technique CALL &BD1C. Cela permet d'avoir des caractères en 4 couleurs avec un simple PRINT (utilisé avec des caractères de contrôle cela permet d'avoir des TILES 8x16 en MODE 0 directement stockées dans des chaînes de caractères avec le bon PEN / PAPER ce qui permet de simuler des palettes différentes)

Commentaire de l'auteur :
C'est intéressant le 10 lignes car ca oblige à faire du code et des données plus compactes après entre la première version à 5 niveaux et la dernière à 13 niveaux (il restait encore un peu de place) ca m'a permis de tester pas mal de choses finalement...

Sinon pour les DATA se sont les niveaux encodés en "base128/180" (en utilisant 128/180 caractères à partir de 36 pour ne pas avoir de caractère " cela permet d'avoir des niveaux avec 50-70 caractères (3 caractères par ligne + 1 caractère pour la position initiale + 2 caractères par blocs à pousser (source / destination)

Les bits des 3 caractères par ligne permettent de définir les murs et les espaces libre du niveau :

### |0000011 1000000 0000000
## ## |0000110 1100000 0000000
# # |0000100 0100000 0000000
#$ # |0000100 0100000 0000000
### $## |0011100 0110000 0000000
# $ $ # |0010000 0010000 0000000
### # ## ########## |1110101 1011111 1111100
# # ## ## ## ..# |1000101 1011011 0000100
# $ $ ..# |1000000 0000000 0000100
##### ### #@## ..# |1111101 1101011 0000100
# ######### |0000100 0001111 1111100
####### |0000111 1111000 0000000


Pour les positions (blocs, destinations, départ), je stocke x*18+y (avec x compris entre 0 et 17 et y compris entre 0 et 9 car les premières/dernières lignes/colonnes ne sont pas utilisables)

Du coup la formule pour calculer la taille de la chaîne de caractères pour stocker un niveau est 37+(nombre de blocs à pousser*2)

Mais il y'aurait pas mal de chose à raconter surtout que j'ai continué à optimiser après la fin du concours.
L'optimisation la plus importante a été de remplacer MODE, BORDER, INK, SYMBOL, CLS par des codes de contrôles ce qui permet de tout initialiser avec un simple PRINT.
Pour que cela soit efficace, cela oblige à stocker des caractères de 0 à 255 et il faut ruser pour stocker le(s) caractère(s) CHR$(0) avec des variables (z$,t$,f$ qui contiennent un, deux et quatre CHR$(0))...
Le système de stockage avait déjà été utilisé pour stocker les niveaux de manière compacte
L'inconvénient c'est que l'on ne peut pas copier/coller facilement le listing d'où l'utilisation d'une version de travail qui remplit les chaînes de caractères...
Dernièrement je me suis rendu compte que je pouvais simplifier mes tests pour la gameplay ce qui ma permis après réorganisation du code (les Line Too Long un peu prise de tête parfois) de caser 2 niveaux de plus...

Voici d'ailleurs la dernière version compatible 464 du listing de travail : Il fonctionne aussi sur 6128 même si je préfère supprimer le POKE &B28B,79 et remplacer CALL &BD19 par FRAME pour celui-ci.

En fait le CPC 464 (contrairement au 6128) ne calcule pas correctement la longueur réelle de la chaîne d'un PRINT lorsque l'on utilise des caractères de contrôle et par conséquent force un retour à la ligne beaucoup trop tôt. Je ne 'ai pas trouvé comment désactiver le retour à la ligne mais en faisant croire au CPC qu'il a plus que 40 colonnes dans sa fenêtre (là j'ai mis 80 mais j'aurais pu mettre un peu moins) il affiche correctement...


- CONTROLS -

Les flèches sont utilisées pour déplacer le doc et pour pousser les moniteurs (1 seul à la fois car le doc n'est pas assez musclé pour en pousser plusieurs à la fois).
La touche ENTREE permet de restaurer le niveau en cas de blocage...

- TRICKS -

* Passer au niveau suivant
Version : DOKOBAND.BAS
ESC puis saisir GOTO 9

- STAFF -

Auteur : Copper
- LINKS -
COMPILATION -> Unofficial 10LINOPAT 2021 © _Public_Domain_ (2021)

 

Goto Top
CPC-POWER/CPCSOFTS, programming by Kukulcan © 2007-2022 all rights reserved.
Reproduction forbidden without any express authorization. All the game titles used belong to their respective owners.
Hébergement Web, Mail et serveurs de jeux haute performance