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

15::gr11::main.c

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

#include "widget.h"
#include "question.h"
#include "music.h"

/* メイン関数 */
int main (int argc, char **argv){

  QUESTION ques;
  GtkWidget *window;

  gtk_init (&argc, &argv); // 初期化
  make_question(); // 問題作成

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (window, 640, 480);
  gtk_window_set_title(GTK_WINDOW(window), "がんちゃん 単位をください");
  
 TOP:
  while(1){
    // スタート画面
    vbox_destroy(); // vboxが消える
    gtk_widget_show_all (start(window)); // ウィンドウの表示
    start_music("start.mp3"); // music start
    gtk_main ();  // メインループ
    quit_music(); // music stop

    if(return_pra() == 1){ // 練習問題
      srand((unsigned) time(NULL)); // ランダムに
      int i = rand() % 70; // 乱数を取る

      ques = load_question(i); // 引き数:問題番号0~69

      vbox_destroy();
      gtk_widget_show_all (mondai4(window, ques));
      start_music("mondai.mp3");
      gtk_main ();
      quit_music();

      vbox_destroy();
      if(saiten(ques.answer4) == 1){ // 正解
	gtk_widget_show_all (seikai_pra(window));
	start_music("seikai.mp3");
      }else{
	gtk_widget_show_all (huseikai(window));
	start_music("huseikai.mp3");
      }
      gtk_main ();
      quit_music();

      goto TOP;
    } 
 
    int x = 0; // ターン数
    while(x < 3){
      // プレイ画面
      vbox_destroy();
      gtk_widget_show_all (play(window));
      start_music("play.mp3");
      gtk_main ();
      quit_music();

      int course = position % 2; // 奇数:一般、偶数:専門

      srand((unsigned) time(NULL)); // ランダムに
      int j; // 乱数を取る

      if(course == 1){ // 一般
	j = rand() % 27; 
	ques = load_question1(j);
      }else{ // 専門
	j = rand() % 43; 
	ques = load_question0(j);
      }
      
      reset_get_score();
      get_have_item(item); // 引き数:playerのitem[]
      // 教科画面
      vbox_destroy();
      gtk_widget_show_all (kamoku(window, ques.kamoku, item));
      start_music("kamoku.mp3");
      gtk_main ();
      quit_music();

      // 問題画面
      vbox_destroy();
      if(return_item_number() == 2) // 2択item使用時
	{
	  gtk_widget_show_all (mondai2(window, ques));
	  start_music("mondai.mp3");
	}else{
	gtk_widget_show_all (mondai4(window, ques));
	start_music("mondai.mp3");
      }
      gtk_main ();
      quit_music();

      // 採点
      vbox_destroy();
      if(return_item_number() == 2) // 2択時
	{
	  if(saiten(ques.answer2) == 1){  // 正解画面
	    gtk_widget_show_all (seikai(window));
	    start_music("seikai.mp3");
	  }else{ // 不正解画面
	    gtk_widget_show_all (huseikai(window));
	    start_music("huseikai.mp3");
	  }
	}else{ // 4択時
	if(saiten(ques.answer4) == 1){ 	  // 正解画面
	  gtk_widget_show_all (seikai(window));
	  start_music("seikai.mp3");
	}else{ // 不正解画面
	  gtk_widget_show_all (huseikai(window));
	  start_music("huseikai.mp3");
	}
      }
      gtk_main ();
      quit_music();

      // ターン数増加
      x++; 
    }

    // 成績発表画面
    vbox_destroy();
    gtk_widget_show_all (kekka(window));
    start_music("kekka.mp3");
    gtk_main ();
    quit_music();

    // 成績画面
    vbox_destroy();
    gtk_widget_show_all (risult(window));
    start_music("risult.mp3");
    gtk_main ();
    quit_music();
  }

  return 0;
}


最終更新日:2015/07/17 10:24:49