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