簡易 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
}
Level 4 の表示例% ./lights
で、UNIX シェルから操作して X-Window 上の ゲーム盤が書き変わることを確認せよ。
あらかじめ適切に関数を分割しておくと、
まあまあ苦労せずにプログラムを拡張できる、という
ことに注目しましょう。
これで完璧、とは言えませんが。。
次回はマウスクリックで
操作できるようにする予定です。