2015 ソフトウェア設計及び演習用の班Wiki

gr11::プロトタイププログラム

/* image-viewer.c */

#include <gtk/gtk.h>
#include <glib.h>
#include <stdlib.h>

#include "gtk_lib.h"

/* 並べるWidgetの総数 */
#define MAX_WIDGET 7
/* 横方向に並べる最大数,残りは次の行 */
#define MAX_HBOX 1

GtkWidget * start(GtkWidget *); //スタート画面
GtkWidget * play(GtkWidget *);   //プレイ画面
GtkWidget * mondai(GtkWidget *);   //問題開始画面
GtkWidget * mondai2(GtkWidget *);   //選択肢が2つになる問題画面
GtkWidget * mondai4(GtkWidget *);   //選択肢が4つ(普通)
GtkWidget * seikai(GtkWidget *);   //正解画面
GtkWidget * huseikai(GtkWidget *);   //不正解画面
GtkWidget * risult(GtkWidget *);   //結果発表画面
GtkWidget * ranking(GtkWidget *);   //順位画面

void app_quit(); // 強制終了
void practice(); // 練習問題

GtkWidget *window;
GtkWidget *vbox;
GtkWidget *hbox;

int pra = 0; // 練習問題をやったら1になる
guint timer_id;

/* ボタンがクリックされたときに呼び出される関数 */
static void cb_button_clicked (GtkWidget *button, gpointer user_data){

  /* メインループを終了 */  
  gtk_main_quit ();
}
		   
/* メイン関数 */
int main (int argc, char **argv){
  gtk_init (&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (window, 640, 480);
  gtk_window_set_title(GTK_WINDOW(window), "がんちゃん 単位をください");
  
 TOP:
  pra = 0;

  while(1){
    // スタート画面
    gtk_widget_destroy(vbox); // vboxが消える
    gtk_widget_show_all (start(window)); // ウィンドウの表示
    gtk_main ();  // メインループ

    if(pra == 1){
      goto TOP;
    } 
 
    int x = 0; // ターン数
    while(x < 3){
      // プレイ画面
      gtk_widget_destroy(vbox);
      gtk_widget_show_all (play(window));
      gtk_main ();
  
      // 教科画面
      gtk_widget_destroy(vbox);
      gtk_widget_show_all (mondai(window));
      gtk_main ();

      // 問題画面
      gtk_widget_destroy(vbox);
      if(return_item_number() == 2) 
	{
	  gtk_widget_show_all (mondai2(window));<br />
  //アイテムを使用して選択肢4つ
	}else{
	gtk_widget_show_all (mondai4(window));<br />
  //アイテムを使わない普通の問題画面
      }
      gtk_main ();

      // 採点
      if(saiten() == 1){
	// 正解画面
	gtk_widget_destroy(vbox);
	gtk_widget_show_all (seikai(window));
	gtk_main ();
      }else{
	// 不正解画面
	gtk_widget_destroy(vbox);
	gtk_widget_show_all (huseikai(window));
	gtk_main ();
      }
      x++; // ターン数増加
    }


    // 成績発表画面
    gtk_widget_destroy(vbox);
    gtk_widget_show_all (ranking(window));
    gtk_main ();

    // 成績画面
    gtk_widget_destroy(vbox);
    gtk_widget_show_all (risult(window));
    gtk_main ();
  }

  return 0;
}


※一部のみ載せています。
15::gr11::スタート
15::gr11::プレイ
15::gr11::問題開始
15::gr11::選択肢2つ
15::gr11::選択肢4つ
15::gr11::正解
15::gr11::不正解
15::gr11::結果発表
15::gr11::順位


最終更新日:2015/06/05 17:38:02