2016 ソフトウェア設計及び演習用の班Wiki
16::gr13::display.h
#ifndef DESPLAY_H #define DESPLAY_H # include <stdlib.h> # include <glib.h> # include <glib/gprintf.h> # include <gtk/gtk.h> # include <gdk-pixbuf/gdk-pixbuf.h> #include "event.h" #define WIDTH 1800 #define HEIGHT 1200 int display_x ; int display_y ; //スプライトが動く領域 typedef struct { GtkWidget *drawing_area;//描画領域 GdkPixmap *bg_pixmap;//背景 gint width; gint height; gint timeout; GList *sprites;//スプライトのリスト GSourceFunc move; Event *event; }AnimeArea; typedef struct{ // スプライトを動かすフィールドに相当するドローイングエリア AnimeArea *drawing_area; // アニメーションのタイムアウト(g_timeout_addの戻り値) // g_timeout_addで設定した時間ごとに,drawing_areaにs_pixbufが描かれる gint timeout; GdkPixbuf *s_pixbuf; // スプライト用の画像(ピクスバッファ) gint x,y; //座標 gint dx,dy; //移動量 gint rect_x, rect_y; //短形座標(座標からのオフセット) gint width; gint height; gint on_flag; //地面に接触しているかのフラグ 0 or 1 gint ID; //種類の判別(主人公、敵…) GSourceFunc move; }Sprite; //アニメーション領域 API AnimeArea * anime_area_new(gint width, gint height, GdkPixmap *bgpixmap, gint timeout); // 幅,高さ,背景画像,時間間隔 (ms) を指定して, // アニメーション領域を作る void anime_area_remove(AnimeArea *area); // スプライトAPI Sprite * sprite_new(AnimeArea *area, gchar *path, gint timeout, GSourceFunc, GSourceFunc); //スプライトを作成する // area: 作成されるスプライトがのる,アニメーション領域 // path: 画像ファイルへのパス // timeout: スプライトを動かす時間間隔, // 描画はアニメーション領域の再描画時に行う void sprite_remove(Sprite *); // スプライトの消去 void set_background(GtkWidget *window); void sprite_draw(Sprite *sprite); void anime_area_draw(AnimeArea *area); gint cb_sprite_timeout(gpointer data); void sprite_move(Sprite *sprite); #endif
最終更新日:2016/08/05 06:46:53