Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » KBLE, l'éditeur de niveau que personne n'a demandé.
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

KBLE, l'éditeur de niveau que personne n'a demandé.

Posté le 01/02/2021 15:36

Bonjour ! Etant donné que KBLE n'est pas uniquement dédié à JTMM2, j'ai décidé de déplacer les informations ici.

KBLE est un éditeur de niveau modal, conçu pour être le plus efficace possible et entièrement utilisable au clavier. Bien qu'étant entièrement utilisable au clavier, il est possible de combiner clavier/souris. Dans l'état actuel, KBLE supporte :
Sélection clavier.
Sélection souris.
Actions.
Zoom.
Sauvegarde et chargement.
Répétition de déplacement et paramètres d'actions.
Configuration.

Pourquoi apprendre KBLE ?

Pour plus d'informations, rendez vous sur la page du projet Sourcehut.

Ci-dessous se trouvent les articles des RDP où est apparu KBLE, et des vidéos de démonstration par ordre chronologique.
Significations de l'acronyme
Alice a écrit :
KBLE, c'est pour Kikoodx Basic Level Editor ?

Tituya a écrit :
C'est pour péter un KaBLE


Revue des Projets
RDP 198

Vidéos
Jour 8 : démonstration des fonctionnalités souris.
Jour 9 : démonstartion des modes au clavier.

Liens utiles
Parcourir le dépôt Git de KBLE.
Ouvrir une issue (report de bug, proposition de fonctionnalité, etc.).

Projets utilisant KBLE
Painfull Success (GNU/Linux)
Painfull Success CG (Casio 90+e)


Potter360 En ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 28/02/2021 10:35 | #


Ha oui ! Ca donne du fil à retordre aux futurs potentiels utilisateurs de KBLE pour des jeux !
Merci en tout cas pour ton retour, et bravo !
Globalement, coder. Mal, mais coder.
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 28/02/2021 13:52 | # | Fichier joint


Au contraire c'est conçu pour être facile à utiliser pour les utilisateurs et les développeurs. J'ai rapidement écrit un parser de fichiers .KBLE en Python qui supporte la spécification complète pour montrer à quel point c'est simple

"""
The MIT License (MIT)

Copyright © 2021 KikooDX

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
“Software”), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""

def info(*args) -> None:
    print("info:", *args)

def merge_bytes(_bytes: bytes) -> int:
    """
    Get a bytes slice and merge them into an integer.
    """
    mul = 256 ** len(_bytes)
    sum = 0
    for byte in _bytes:
        mul //= 256
        sum += byte * mul
    return sum

def kble_parse(_bytes: bytes) -> list:
    """
    Read content of binary file using the KBLE format and output a two
    dimensional int grid.
    """
    # Read whole file at once.
    # Check version byte.
    assert(_bytes[0] == 0)
    # Get byte length of cells.
    cell_size: int = _bytes[1]
    info("Cell size:", cell_size)
    # Get level dimensions.
    width = merge_bytes(_bytes[2:4])
    height = merge_bytes(_bytes[4:6])
    info("Level width:", width)
    info("Level height:", height)
    # Check than the number of bytes matches the obtained informations.
    assert(len(_bytes) == width * height * cell_size + 6)
    info("Correct format.")
    # Process remaining bytes and add them to a list.
    grid: list = [[0 for _ in range(width)] for _ in range(height)]
    i: int = 6
    x: int = 0
    y: int = 0
    while (i < len(_bytes)):
        SLICE = _bytes[i:i + cell_size]
        grid[y][x] = merge_bytes(SLICE)
        i += cell_size
        x += 1
        if x == width:
            x = 0
            y += 1
    info("Parsing ended successfully.")
    return grid

if __name__ == "__main__":
    with open("sample.kble", "rb") as file:
        BYTES = file.read()
        data = kble_parse(BYTES)
    # Pretty print.
    for line in data:
        for cell in line:
            print(cell, "\t", end="")
        print()

J'ai gardé le code simple et le « parser » fait moins de 20 lignes de code significative. Ce code est en fichier joint.

Ajouté le 01/03/2021 à 22:34 :
Salut ! J'ai terminé mon premier projet avec KBLE ─ le jeu de la game jam. Personne n'y jouera jamais étant donné qu'il faut le compiler Cela reste une preuve que l'éditeur est utilisable, et j'affirme que j'ai été plus productif qu'avec n'importe quel autre éditeur existant. J'ai noté quelques problèmes d'efficacité, et j'en ai pris note en ouvrant de nouvelles issues.

Si vous voulez voir le jeu ─ et les niveaux ─ les sources sont sur SourceHut et itch.io. Sous licenses libres bien sûr
https://kikoodx.itch.io/painfull-success
https://git.sr.ht/~kikoodx/painfull-success

Et si vous pensez que ce n'est pas lié aux calculatrices, please stand by
ouais ouais
Lephenixnoir En ligne Administrateur Points: 24634 Défis: 170 Message

Citer : Posté le 01/03/2021 22:54 | # | Fichier joint


Alors voilà je tiens à dire que (1) la direction des rebonds est pas très claire, et (2) j'ai tellement plus galéré à capturer le GIF et à le faire assez léger qu'à installer le jeu, c'est horrible.

Cela dit enjoy, les idées sont sympa


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 02/03/2021 01:02 | #


Merci d'avoir pris le temps d'y jouer !
(1) Oui désolé, j'ai pensé pendant tout le développement que ce comportement est évident alors qu'il ne l'est clairement pas x(
(2) C'est un très beau GIF.

J'avais oublié de mettre un lien vers les mises à jour prévues pour KBLE, les voici :
~kikoodx/kble#4: Yank/paste system.
~kikoodx/kble#5: No selection verb call.

Bonne nuitée !

Je veux garder mon streak de messages post. une heure du matin.

Ajouté le 13/03/2021 à 01:11 :
Hello peeps, j'ai pris un peu de temps pour créer des issues sur KBLE (#6→9) et en résoudre une (#6). Vous pouvez les voir sur le tracker, ils ne sont pas encore tous acceptés alors ça peut bouger.
La fonctionnalité implémentée est une mémoire de paramètre. C'est dur à expliquer, surtout à cette heure ci, néanmoins je vais essayer ^^' C'est diantrement pratique et est indiqué dans le README.

Lorsque l'utilisateur effectue une action, le paramètre passé est 1 par défaut. C'est ce qui fait que r place la tuile 1 (grise) par exemple. Cette fonctionnalité rend le « paramètre par défaut » dynamique ! Entrer 2p met cette valeur à 2, et appuyer sur r placera désormais la tuile 2 (rouge) La valeur peut être réinitialisée en pressant p sans paramètre. La commande P (capitalisé !) agit comme la pipette dans beaucoup d'éditeurs graphiques : la valeur de la case où se trouve actuellement le curseur devient le paramètre par défaut.

J'espère que j'ai bien expliqué la fonctionnalité, encore une fois c'est un peu abstrait et un concept nouveau conçu pour l'éditeur. Je recommande de l'essayer par vous même pour comprendre.

Pseudo HS : je travaille sur un projet (desktop ) qui utilise KBLE, je vais m'occuper de ce dernier en parallèle pour bien suivre mes besoins. J'espère que l'éditeur deviendra assez efficace et utile pour que d'autres personnes que moi même considèrent l'utiliser dans leurs projets un jour

Maintenant je devrais probablement aller dormir.
Peut-être.
On verra bien.

Ajouté le 15/03/2021 à 18:49 :
Une mise à jour avant minuit ? Deviendrais-je fou, lunatique, timbré, taré ?
Ne vous faites point de souci pour moi, je reviendrai demain à une heure

J'annonce la création et la sortie simultanée de kble2lua(pas ™), un utilitaire de conversion très simple d'utilisation qui prend le chemin vers un fichier .kble en entrée et écrit sur la sortie standard un programme Lua correspondant. Cela permet d'ajouter un niveau d'abstraction au format de fichier pour les développeurs d'add-ins par exemple, pour qui il sera plus simple de traiter ces fichiers avec un script Lua. Pour les programmeurs C, le projet peut faire office d'un exemple d'implémentation du format en 69 lignes (nice).

Installation :
git clone https://git.sr.ht/~kikoodx/kble2lua && cd kble2lua
make
sudo make install

Désinstallation :
sudo make uninstall

RTFM :
man kble2lua

Exemple :
kble2lua suckless.kble > sucky.lua


Un miroir est disponible sur le Gitea <https://gitea.planet-casio.com/KikooDX/kble2lua>.
ouais ouais
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 18/03/2021 19:24 | #


Bonjour ! Aujourd'hui je voulais commencer un projet d'add-in mais OpenBSD + GNU =

Pour patienter, j'ai démarré « KBLE 2 », que j'appellerai KBLE C. Je vais le développer plus lentement que KBLE Zig, je veux qu'il soit plus simple, portable et puisse utiliser plusieurs méthodes de rendu (au moins ncurses et raylib). Soyons fous, pour peut-être avoir un jour une version oncalc.

KBLE C n'est pas encore utilisable. Le format de fichier est le même que pour KBLE Zig, je continuerai d'utiliser KBLE Zig pendant le développement de KBLE C.

Pourquoi ?
J'aime programmer en C, et j'ai besoin d'entrainement.

T'en es où sagouin ?
Sagouin ? Ouille J'ai commencé aujourd'hui, j'ai eu le temps de programmer la lecture et l'écriture des niveaux ─ qui sont déjà mieux programmés que dans la version Zig, j'en suis plutôt content.

Vous pouvez trouver KBLE C sur SourceHut.
https://git.sr.ht/~kikoodx/kble-c

Pour le moment vous pouvez le construire comme tout projet CMake :
$ git clone https://git.sr.ht/~kikoodx/kble-c && cd kble-c
$ mkdir build && cd build
$ cmake ..
$ make
$ ./kblec ../sample.kble reduced.kble

Vous ne verrez rien, mais ../sample.kble est ouvert et sauvegardé sous reduced.kble. En fait pour le moment, ne clonez pas le dépôt sauf si vous voulez lire le peu de code que j'ai écrit (~200 lignes).

@RDP
ouais ouais
Lephenixnoir En ligne Administrateur Points: 24634 Défis: 170 Message

Citer : Posté le 19/03/2021 08:28 | #


Question rapide ! Tu es sûr que tu ne t'infliges pas des dommages supplémentaires avec Ncurses ? C'est pas la joie à programmer de ce que je me souviens ^^"
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 22/03/2021 13:21 | #


Lephenixnoir a écrit :
Question rapide ! Tu es sûr que tu ne t'infliges pas des dommages supplémentaires avec Ncurses ? C'est pas la joie à programmer de ce que je me souviens ^^"

En effet c'est pas la joie, mais ça m'intéresse. ncurses est accessible en TTY et j'aime bien travailler en TTY, ce qui est impossible avec KBLE Zig. Je verrai ça plus tard de toute manière, vu que j'ai fait un pas en diagonale :

Je vous présente un projet sans nom.
https://gitea.planet-casio.com/KikooDX/gotc
Pour le moment il charge et sauvegarde les .kble sur calculatrice. Je vais sûrement essayer de faire un petit jeu avec mode développeur et éditeur de niveau. Pour le moment je vais juste faire l'éditeur, et coller un jeu dessus si il fonctionne bien 8)
Yep je me fais facilement distraire.

@èredespets @RDP
ouais ouais

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 83 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd