Jlg's Home Page

Home Page d'accueil / Home page
|
Blokus Page d'avancement de Blokus / Work in Progress Blokus page
|
PIC Comment passer des heures avec des mille pattes / How to spend too much time with bugs (even if it works)
|
Rockets Fusées à eau... Réalisation, lancement, ... / Water rockets... HowTO and launches
|
Contact Me contacter / Contact me !

Blokus

Description
Avancement
Rules
Screenshots

Blokus SDL - Suivi de projet / WIP

Description 2005.01.09

Sur cette page vous trouverez l'état d'avancement du jeu que je suis en train de coder, Blokus SDL. Il existe déjà une application de ce type, utilisant également la bibliothèque SDL pour gérer l'affichage, mais j'avais envie de coder ce jeu moi même, car le coté "Intelligence Artificielle" (un bien grand mot) qui se cache derrière le mode 1 joueur m'attire particulièrement.
Mon but à long terme est de créer une application qui soit capable de jouer contre l'utilisateur au jeu de plateau et de réflexion Blokus. Bien sûr ce programme sera distribué sous licence GPL, et les sources seront disponibles sur le site.

Description 2005.01.09

Here you'll find the progress of my game Blokus SDL. There is another application of this game, which use the SDL library, but I will code this game by myself, 'cause the AI stuff behind the solo mode is quite interresting.
I plan to create an application which could play against the user the game Blokus. Of course my game will be distributed under the GPL license, and the source code will be donwloadable on the website.

Avancement 2005.09.04

Alors, je suis en train de séparer tout le code en différents fichiers, afin d'y voir plus clair. J'en profite pour le nettoyer un peu, le rendre plus propre (c'était bien sâle par endroits :). De même, j'en profite pour passer à Scons, un outil de compilation très puissant écrit en python, qui va me faciliter la vie. J'ai également introduit une nouveauté, le jeu sera thèmable, c'est à dire que les blocs de base et le fond, ainsi que toutes les images du jeu, pourront être changées par thème, de même que les musiques lorsqu'il y en aura assez. Le tout décrit dans un fichier 'style.xml' par thème, que je parse en utilisant la bibliothèque expat.
Les sources sont donc réparties dans les fichiers suivants :
  • b_core.c qui contient le moteur de jeu et de thème
  • b_gui.c qui contient les fonctions relatives à SDL
  • b_ia.c qui contient toutes les fonctions relatives à l'IA du jeu
  • b_sound.c qui contient le moteur de son
  • b_main.c qui recolle les morceaux dans tout ça
Le jeu utilise désormais les bibliothèques Expat, SDL, SDL_mixer.

Progress 2005.09.04

Well, I'm splitting the code into several source files, to improve reading facility. I'm cleaning it too ('cause it was sometimes quite ugly :). Now I use Scons, a powerful and easy-to-use building tool, written in python. Another new stuff, the game will be skinable, I say, lil' blocks and background will be customisable by themes, as the music. A theme is a simple 'style.xml' file describing it. I parse this file using the expat library.
Source files are now :
  • b_core.c containing the game and theme engine
  • b_gui.c containing all SDL-relative functions
  • b_ia.c which is the game's IA
  • b_sound.c containing the sound engine
  • b_main.c which glue up everithing
The game is now using Expat, SDL and SDL_mixer libraries.

Avancement 2005.08.04

Après un peu d'innactivité sur ce projet (manque de temps), voici une nouvelle mise à jour. Les 84 pièces (21 * 4) sont toutes cliquables, on peut les bouger indépendamment les unes des autres, les faire tourner, etc... L'interface utilisateur est en bonne voie ! Il me reste à coder le placement des pièces sur le plateau de jeu, ainsi que tout le moteur de jeu derrière... Ca va devenir intéressant :)

Progress 2005.08.04

Update after some innactivity due to lack of time. The 84 pieces (21 * 4) are all independently movable, with rotation and other stuff... The GUI is in the right way ! Now I have to write the pieces placement on the table, and the game engine... This will be quite interesting !

Avancement 2005.03.12

Encore quelques petites choses en plus, j'ai enfin codé les routines de rotation (horaire/trigo) et de symétrie (horizontale/verticale)) des pièces de jeu. J'ai également mis en place l'utilisation de la molette pour la rotation de la pièce active, ainsi que clic droit et clic milieu pour les symétries. Cela rend l'utilisation du programme assez intuitive, pas besoin de raccourcis claviers de malade pour faire bouger la pièce :) Prochaine étape : afficher chaque pièce sur une surface SDL indépendante, gérer l'ordre d'affichage (plusieurs 'layers'), et après on pourra commencer à implanter les règles (pas le plus dur). voilà voilà :)

Progress 2005.03.12

Some lil' things added, now rotations and symmetries of pieces are here. I've added the wheel mouse support, used for the piece rotation, symmetries are done by middle and right clic. These things made the game quite intuitive, no keys are necessary :) Next step : display each piece on an independant SDL surface, manage display order via different layers, then i'll code the rules engine... That's all folks ! :)

Avancement 2005.02.26

Ca y est, la transparence des pièces fonctionne, on peut afficher plein de trucs sans tout casser ce qu'il y a déjà d'affiché :) Pas une grosse avancée, mais ça fait du bien de voir qu'on peut trouver soi-même les bugs qu'on code %)

Progress 2005.02.26

Transparency of the pieces is now implemented, I can draw plenty of things without scratch them :) Just a lil' stuff but it shows that I can read my own code several months after the last change ^^

Avancement 2005.01.09

Pour le moment je code le moteur graphique du jeu. Il utilise la bibliothèque SDL. Actuellement rien de transcendant, une fenetre noire avec une pièce qu'on peut bouger à la souris (comme un drag&drop), et changer la pièce affichée avec le clic droit... Mais c'est la base de l'interface utilisateur, et comme faut bien commencer par quelquepart... Maintenant faut que je m'attaque à l'affichage de toutes les pièces an même temps, gérer le Zindex, afficher le plateau, ... Ensuite seulement viendront les routines pour placer les pièces sur le plateau de jeu. Faut bien pouvoir voir le résultat de ce qu'on code dans le moteur... (ceci laisse sous-entendre que ce n'est pas de gaieté de coeur que je code une interface, j'aime pas faire ça :)

Progress 2005.01.09

I'm coding the graphic engine, which uses the SDL library. Actually, nothing really impressive, just a black window which displays a piece we can move with the mouse, like a drag&drop, and switch the display between all pieces with a right-click... It's the very start of a GUI but necessary... Now I intend to display all the pieces of the game, use a Zbuffer to display the active piece over the others, display the board, ... Then i'll code the routine to place pieces onboard. I need to display the results of the game engine to debug...

Règles du jeu

C'est un jeu à 4 joueurs, se déroulant sur un plateau de jeu de 20*20 cases. Chaque joueur reçoit 21 pièces de couleur (bleu, jaune, rouge ou vert) de 1 à 5 carrés, du type "Tetris". Le but du jeu est de placer toutes ses pièces sur le plateau, tout en empêchant ses adversaires de le faire, en bloquant au maximum leurs possibilités de placement. C'est un jeu aux règles très simple mais qui se complexifie de lui même au fur et à mesure de l'avancement de la partie.
Voici un résumé des règles de placement :
  • L'ordre dans lequel on joue est le suivant : bleu, jaune, rouge et vert.
  • Le premier joueur place une pièce de son choix sur le plateau.
  • La première pièce posée doit recouvrir une case d'angle du plateau.
  • Les pièces de même couleur doivent se toucher par au moins un angle.
  • Les pièces de même couleur ne peuvent se toucher que par les angles.
  • Le joueur abandonne lorsqu'il ne peut plus poser de pièce.
  • Le vainqueur est celui qui a le score le plus élevé.
Pour les points c'est simple, 1 point par carré posé, +15 si on pose toutes ses pièces, et +5 si on pose la pièce "1 carré" en dernier.

Rules

Blokus is a four players reflexion game. They play on a 20*20 board. Each of them have 21 "Tetris-like" pieces from 1 to 5 squares. The aim of the game is to place each of the pieces on the board, while trying to block your opponents doing that. Rules are quite simple, even if the game is more complicated turn after turn.
Rules :
  • Playing order : blue, yellow, red, green.
  • First player places a piece on board.
  • The first placed piece must cover one angle of the board.
  • Same color pieces must have at least one angle in common.
  • Same color pieces can touch them only by one angle.
  • The player has finished when they can't place any piece.
  • The winner is the player with the highest score.
Points: 1 point per square onboard, +15 if all pieces are placed, and +5 if we've finished with the tiny '1 square' piece.

Screenshots 2005.02.26

Blokus screen shot

Screenshots 2005.02.26

Blokus screen shot

Screenshots 2005.01.09

Blokus screen shot Blokus screen shot