簡易 X-Window ライブラリ を使用し、ゲーム版をグラフィックで表示する。
画面の大きさはヘッダファイルで定数として宣言する。
画面の各サイズに次のような定数名をつけた。
#define SCREEN_WIDTH 300 #define SCREEN_HEIGHT 300 #define LIGHTS_XPOS 25 #define LIGHTS_YPOS 25 #define LIGHT_WIDTH 50 #define LIGHT_HEIGHT 50 #define WINDOW_NAME "Lights Out!" /*------------------------*/ /* functions in display.c */ /*------------------------*/ /* * 画面の初期化 */ void init_display();
# Makefile for LIGHTS OUT! SRCS = main.c display.c OBJS = $(SRCS:.c=.o) HDRS = lights.h DEBUG = -g LIBDIR = -L/home/speech/nishi/lib INCLUDE = -I. -I/home/speech/nishi/include TARGET = lights .c.o: $(CC) -c $(DEBUG) $(INCLUDE) $*.c $(TARGET): $(OBJS) $(CC) $(LIBDIR) $(OBJS) $(DEBUG) -lXp -lX11 -o $(TARGET) # end of file
init_display();
#include "Xp.h"
/* * 画面の初期化 */ void init_display() { ????? 自分で考えて実装すること ????? 自分で考えて実装すること ????? 自分で考えて実装すること }
ただし、以前に書いた部分もまた後で使うかも知れない。
消してしまうのは不便なので、こういうときは次のようにするとよい。
(#if 0 と #else で囲まれた部分はコンパイル時に無視される)
void print_lights( int lights[5][5] ) { #if 0 いままで書いた部分(無視される) いままで書いた部分(無視される) いままで書いた部分(無視される) いままで書いた部分(無視される) #else 新しく書く部分 新しく書く部分 新しく書く部分 新しく書く部分 #endif }
% ./lights
で、UNIX シェルから操作して X-Window 上の ゲーム盤が書き変わることを確認せよ。
あらかじめ適切に関数を分割しておくと、
まあまあ苦労せずにプログラムを拡張できる、という
ことに注目しましょう。
これで完璧、とは言えませんが。。
次回はマウスクリックで
操作できるようにする予定です。