!!表示すべきもの *ゲーム画面 *自機キャラクター *敵キャラクター *弾 *回復アイテム *武器アイテム *スコア *タイム !!11月24日までの進行状況 *背景画像の表示及びその上にgif画像(1枚)の表示が可能。 まだ試してはいないが自機モジュールから座標を取得しキャラの表示もできる? !!main関数に呼び出してもらう関数 今のところdisply()を予定 12/24現在 引数はなし !!main_disp.h 8< // $Id$ // -*-: coding:utf-8; -*- #pragma once #include # include # include # include # include "gtk_lib.h" # include "anime.h" # include "char_pics.h" void disply(GtkWidget *window); // 画面への表示出力 >8 !!char_pics.h 8< // $Id$ // -*-: coding:utf-8; -*- #pragma once # include # include # include # include "gtk_lib.h" # include "anime.h" # include "progress.h" extern mySprite *m_char; extern mySprite *enemy_char; mySprite *main_char_new(myAnimeArea *area); // 自機キャラ生成 void main_char_move(mySprite *sprite); // 自機キャラ座標 void enemys_init(myAnimeArea *area); void enemy_char_new(myAnimeArea *area, gint len_ene); // 敵キャラ生成 void enemy_char_move(mySprite *sprite); // 敵キャラ座標 gint bulls_init(myAnimeArea *area); void bull_new(myAnimeArea *area, gint len); // 弾生成 void bull_move(mySprite *sprite); // 弾座標 void pics_remove(mySprite *self); // 画像表示消去 mySprite *timer_new(myAnimeArea *area); void time_gazou_disp(mySprite *sprite); void life_new(myAnimeArea *area); // HP画像生成 void life_posi(mySprite *sprite); // HP画像更新 >8 !!anime.h 8< # include # include # include # include # include # include # include //スプライトが動く領域 typedef struct { GtkWidget *drawing_area; //描画領域 GdkPixmap *bg_pixmap; //背景 gint width; //画像横幅 gint height; //画像縦幅 gint timeout; GList *sprites; //スプライトのリスト GSourceFunc move; // 動きを決める関数 myEvent *event; } myAnimeArea; // スプライト typedef struct { myAnimeArea *anime_area; // のっかっているアニメーション領域 // gint timeout; // スプライトのタイムアウト */ GdkPixbuf *pixbuf; // スプライト用画像(ピクスバッファ) gint width; // 幅 gint height; // 高さ gint x, y; // 座標 gint vec; // キャラの向き gint length; // 敵や弾の配列数 gint ball_del; // 弾の消失 GSourceFunc move; // 動きを決める関数 } mySprite; //アニメーション領域 API myAnimeArea * my_anime_area_new(gint width, gint height, GdkPixmap *bg_pixmap, gint timeout); // 幅,高さ,背景画像,時間間隔 (ms) を指定して, // アニメーション領域を作る void my_anime_area_remove(myAnimeArea *area); //アニメーション領域 area を消す // スプライトAPI mySprite * my_sprite_new(myAnimeArea *area, gchar *path, gint timeout, GSourceFunc, GSourceFunc); //スプライトを作成する // area: 作成されるスプライトがのる,アニメーション領域 // path: 画像ファイルへのパス // timeout: スプライトを動かす時間間隔, // 描画はアニメーション領域の再描画時に行う void my_sprite_init(mySprite *sprite); // スプライトの位置とベクトルの初期値を決める関数 // 利用者が用意する void my_sprite_move(mySprite *sprite); // スプライトを移動する関数 // 利用者が用意する void my_sprite_remove(mySprite *); // スプライトの消去 >8 !!gtk_lib.h 8< # ifndef _MY_GTK_LIB_H_ # define _MY_GTK_LIB_H_ # include # define WIDTH 1280 # define HEIGHT 720 //gtkの機能をまとめて使うためのインターフェイス typedef PangoFontDescription My_Font_Desc; // 初期化 // とにかく実行直後に呼んでおくこと void my_init(int argc, char *argv[]); // ウィンドウの作成 // 1280x720, 枠の幅が0pixel GtkWidget * my_window_new(gint width, gint height); // ラベルの作成 GtkWidget * my_label_new(char *label, My_Font_Desc *fontdescription); // ラベル付きボタンの作成 GtkWidget * my_button_new(char *label, My_Font_Desc *fontdescription); // イメージの作成 GtkWidget * my_image_new(char *path); // Fontset My_Font_Desc *my_font_description(const gchar *fontname); //Pixmap GdkPixmap *my_pixmap_new_from_data(GtkWidget *window, char *path); GtkWidget *my_drawing_area_new(int w, int h, GdkPixmap *pixmap, gboolean relative); int my_animation(GtkWidget *window, GtkWidget *drawin_area, gboolean (*handler)(gpointer), int timeout); // イベント処理 (コールバック) 関数 gint my_close_handler(GtkWidget *widget, gpointer gdata); void my_button_clicked_handler(GtkWidget *widget, gpointer data); gboolean my_set_click_and_remove(gboolean); void my_widget_remove(GtkWidget *); int my_timeout_add(int timeout, GSourceFunc handler, gpointer widget); # endif >8