2014 ソフトウェア設計及び演習用の班Wiki
gr03:表示・出力モジュール
main_disp.h
// $Id$ // -*-: coding:utf-8; -*- #pragma once #include <stdio.h> # include <stdlib.h> # include <gtk/gtk.h> # include <glib/gprintf.h> # include "gtk_lib.h" # include "anime.h" # include "char_pics.h" void disply(GtkWidget *window); // 画面への表示出力
char_pics.h
// $Id$ // -*-: coding:utf-8; -*- #pragma once # include <stdlib.h> # include <gtk/gtk.h> # include <glib/gprintf.h> # include "gtk_lib.h" # include "anime.h" # include "progress.h" extern mySprite *m_char; extern mySprite *enemy_char; extern int Pix_rm_flag; mySprite *main_char_new(myAnimeArea *area); // 自機キャラ生成 gint main_char_move(mySprite *sprite); // 自機キャラ座標 gint enemys_init(myAnimeArea *area); void enemy_char_new(myAnimeArea *area, gint len_ene); // 敵キャラ生成 gint 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画像更新 void warning_new(myAnimeArea *area); //WARNING画像生成 int warning_disp(mySprite *sprite); //WARNING画像更新 void talk_init(myAnimeArea *area); void talk_new(myAnimeArea *area); void talk_posi(mySprite *sprite); void item_new(myAnimeArea *area); //item生成 int item_disp(mySprite *sprite); //item画像更新 int weapon_disp(mySprite *sprite); //weapon画像更新 void hira_new(myAnimeArea *area); // 平山先生画像生成 int hira_posi(mySprite *sprite); // 平山先生画像更新 mySprite *score_new(myAnimeArea *area); //スコア画像生成 void score_gazou_disp(mySprite *sprite); //スコア画像更新
anime.h
// キャラや弾のアニメーション領域作成ヘッダ # ifndef _ANIME_H # define _ANIME_H # include <stdlib.h> # include <glib.h> # include <glib/gprintf.h> # include <gtk/gtk.h> # include <gdk-pixbuf/gdk-pixbuf.h> # include "gtk_lib.h" //スプライトが動く領域 typedef struct { GtkWidget *drawing_area; //描画領域 GdkPixmap *bg_pixmap; //背景 gint width; gint height; gint timeout; GList *sprites; //スプライトのリスト GSourceFunc move; } 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, gint length); //スプライトを作成する // area: 作成されるスプライトがのる,アニメーション領域 // path: 画像ファイルへのパス // timeout: スプライトを動かす時間間隔, // 描画はアニメーション領域の再描画時に行う void my_sprite_draw(mySprite *sprite); void my_sprite_init(mySprite *sprite); // スプライトの位置とベクトルの初期値を決める関数 // 利用者が用意する void my_sprite_move(mySprite *sprite); // スプライトを移動する関数 // 利用者が用意する void my_sprite_remove(mySprite *); // スプライトの消去 #endif
gtk_lib.h
# ifndef _MY_GTK_LIB_H_ # define _MY_GTK_LIB_H_ # include <gtk/gtk.h> # 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
最終更新日:2015/02/18 13:04:42