Un puissance 4 en langage C

Après un programme de type « Hello World », voici un programme plus élaboré qui permet de jouer au Puissance 4 contre  son Apple II.

Le source  a été récupéré sur le site Zeste de savoir (merci aux auteurs Lucas-84, paraze, Taurre et informatitien0 pour ce tutoriel de programmation en C).

J’ai facilement adapté le source à l’Apple II : suppression des caractères accentués et remplacement de la fonction scanf() par get_char(). La fonction de saisie scanf a un comportement étrange sous émulateur Apple II ; pour terminer la saisie au clavier, il faut saisir ‘CTRL’ + ‘↵’ au lieu d’un simple ‘↵’. J’ai donc utiliser la fonction get_char qui attend un seul caractère.

Le makefile

Pour faciliter la compilation et l’installation de l’executable sur une image de disquette, j’ai crée un petit makefile :

# Makefile for puissance4.
# C source code for CC65, target is Apple II
#
CC65=cl65
CC65_FLAG=-t apple2enh -O

GCC=gcc
GCC_FLAG = -Wall 

NOM_PROG=puissance4

SRC=$(NOM_PROG).c 
A2_EXE=PUISS4
LINUX_EXE=$(NOM_PROG)
DISK=DISKTST.do

AC=java -jar /usr/local/share/applecommander/AppleCommander-ac-1.5.0.jar

all : a2 linux
	@echo "All targets updated."

a2 : $(A2_EXE)
	@echo "Apple II target updated."
	
linux : $(LINUX_EXE)
	@echo "Linux target updated."

$(A2_EXE) : $(SRC)
	$(CC65) $(CC65_FLAG) $(SRC) -o $(A2_EXE)

$(LINUX_EXE) : $(SRC)
	$(GCC) $(GCC_FLAG) $(SRC) -o $(LINUX_EXE)

clean :
	rm -f *.o a.out core $(LINUX_EXE) $(A2_EXE) *~

backup : $(INC) $(SRC) makefile
	tar cvzf $(HOME)/backup/$(NOM_PROG)_`date +%y%m%d`.tar.gz *.c makefile 
	@echo "Backup completed."

install : 
	$(AC) -d $(DISK) $(A2_EXE) 
	$(AC) -as $(DISK) $(A2_EXE) < ./$(A2_EXE)
	@echo "Installation of $(A2_EXE) on $(DISK) completed." 

Ce makefile permet de  produire l’exécutable pour les deux environnements ; Linux (en utilisant gcc) et Apple II (avec cc65). Les fonctions disponibles sont les suivantes :

    • make all : fabrique les exécutables pour les deux environnements
    • make linux : fabrique l’exécutable sous Linux uniquement (nom défini par la variable LINUX_EXE)
    • make a2 : fabrique l’exécutable pour Apple II (variable A2_EXE)
    • make install : copie exécutable Apple II sur le fichier de la disquette (la variable DISK contenant le nom du fichier) en invoquant AppleCommander
    • make backup : sauvegarde le projet dans une archive sur le disque.

Le programme Puissance 4 en mode console

L’archive téléchargeable  puissance4.zip contient le code source puissance4.c et le makefile associé.

Pour le compiler et jouer sur Apple II, décompressez l’archive dans un répertoire de votre PC sous Linux. Il est nécessaire d’avoir une image de disquette dans le même répertoire (bootable et au format DOS 3.3 dans cet exemple). Puis depuis un terminal, procédez de la façon suivante  (seules les commandes précédées par $ sont à saisir) :

$ make all
cl65 -t apple2enh -O puissance4.c -o PUISS4
Apple II target updated.
gcc -Wall puissance4.c -o puissance4
Linux target updated.
All targets updated.

$ make install
java -jar /usr/local/share/applecommander/AppleCommander-ac-1.5.0.jar -d DISKTST.do PUISS4
java -jar /usr/local/share/applecommander/AppleCommander-ac-1.5.0.jar -as DISKTST.do PUISS4 < ./PUISS4
Installation of PUISS4 on DISKTST.do completed.

Le binaire PUISS4 sera fabriqué puis transféré sur la disquette DISKTST.do.

Le jeu peut alors être testé avec AppleWin. Démarrez l’émulateur, introduire la disquette puis tapez :

BRUN PUISS4
Partie contre l’Apple II

Pour jouer contre l’ordinateur, choisissez l’option à 1 joueur. Dans cette version, l’ordinateur n’est pas très fort…