2016 ソフトウェア設計及び演習用の班Wiki
16::gr11::image-viewer.c
#include <stdlib.h> #include <gtk/gtk.h> #include <SDL.h> #include <SDL_mixer.h> #include "gui.h" static Mix_Music *music; // BGM static Mix_Chunk *se1, *se2; // 効果音 /*startボタンがクリックされたときに呼び出される関数*/ static void cb_button_clicked (int argc, char **argv) { GtkWidget *window; /* GTK+の初期化およびオプション解析 */ gtk_init (&argc, &argv); /* ウィンドウの作成 */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* ウィンドウの大きさの設定 */ gtk_widget_set_size_request (window, 350, 350); { GtkWidget *vbox; /* 縦にウィジェットを配置するボックスの作成 */ vbox = gtk_vbox_new (FALSE, 3); /* ボックスをウィンドウに配置 */ gtk_container_add (GTK_CONTAINER (window), vbox); { GtkWidget *image; GtkWidget *button; GtkWidget *button2; image = gtk_image_new_from_file ("/home/h26j/h26j103/images/bgcolor.png"); gtk_box_pack_start (GTK_BOX (vbox) , image, TRUE ,TRUE, 0); music = Mix_LoadMUS("BB.mp3"); // 曲ファイルをロード se1 = Mix_LoadWAV("shotgun.wav"); // 効果音ファイル1をロード se2 = Mix_LoadWAV("ball.wav"); // 効果音ファイル2をロード Mix_AllocateChannels(16); // 同時発声数を設定 Mix_PlayMusic( music, -1 ); // BGMの再生スタート(無限ループ) } } /* ウィンドウの表示 */ gtk_widget_show_all (window); /* メインループ */ gtk_main (); // Mix_FadeOutMusic(3000); // フェードアウト(3000ms) SDL_Delay(3000); Mix_HaltMusic(); // 曲の再生停止 Mix_FreeMusic(music); // ロードした曲を開放 Mix_FreeChunk(se1); // ロードした効果音1を開放 Mix_FreeChunk(se2); // ロードした効果音2を開放 Mix_CloseAudio(); // SDL_Mixerクローズ SDL_Quit(); // SDL使用終了 // return 0; } /* quitボタン押した時の関数*/ static void cb_button2_clicked (GtkWidget *button2, gpointer user_data) { gtk_app_t* gtk_app = g_slice_new(gtk_app_t); init_gui(gtk_app); /* メインループを終了 */ //gtk_main_quit (); } /* メイン関数 */ int main (int argc, char **argv) { GtkWidget *window; /* GTK+の初期化およびオプション解析 */ gtk_init (&argc, &argv); gtk_app_t* gtk_app = g_slice_new(gtk_app_t); init_gui(gtk_app); // SDL_Init( SDL_INIT_AUDIO ); // SDL初期化 Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 1024); music = Mix_LoadMUS("AA.mp3"); // 曲ファイルをロード se1 = Mix_LoadWAV("shotgun.wav"); // 効果音ファイル1をロード se2 = Mix_LoadWAV("ball.wav"); // 効果音ファイル2をロード Mix_AllocateChannels(16); // 同時発声数を設定 Mix_PlayMusic( music, -1 ); // BGMの再生スタート(無限ループ) // /* ウィンドウの作成 */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* ウィンドウの大きさの設定 */ gtk_widget_set_size_request (window, 350, 350); { GtkWidget *vbox; /* 縦にウィジェットを配置するボックスの作成 */ vbox = gtk_vbox_new (FALSE, 3); /* ボックスをウィンドウに配置 */ gtk_container_add (GTK_CONTAINER (window), vbox); { GtkWidget *image; GtkWidget *button; GtkWidget *button2; image = gtk_image_new_from_file ("/home/h26j/h26j103/images/123.jpg"); gtk_box_pack_start (GTK_BOX (vbox) , image, TRUE ,TRUE, 0); /* ボタンの作成 */ button = gtk_button_new_with_label ("Music Start"); /* ボタンをボックスに配置 */ gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); /* ボタンがクリックされたときに呼び出される関数の設定 */ g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cb_button_clicked), NULL); /* ボタンの作成 */ button2 = gtk_button_new_with_label ("Game Start"); /* ボタンをボックスに配置 */ gtk_box_pack_start (GTK_BOX (vbox), button2, FALSE, FALSE, 0); /* ボタンがクリックされたときに呼び出される関数の設定 */ g_signal_connect (G_OBJECT (button2), "clicked", G_CALLBACK (cb_button2_clicked), NULL); } } /* ウィンドウの表示 */ gtk_widget_show_all (window); /* メインループ */ gtk_main (); return 0; }
最終更新日:2016/07/29 13:51:06