最初の問題(最初の画面)
(1) (2) (3)
↓ ↓ ↓
× × ○
第二問
(1) (2) (3)
↓ ↓ ↓
○ × ×
第三問
(1) (2) (3)
↓ ↓ ↓
× × ○
第四問
(1) (2) (3)
↓ ↓ ↓
× × ○
第五問
(1) (2) (3)
↓ ↓ ↓
× ○ ×
第六問
(1) (2) (3)
↓ ↓ ↓
× × ○
第七問
(1) (2) (3)
↓ ↓ ↓
○ × ×
というクイズのプログラムを作ろうとしています。
画面数は全部で22ページあって(一番初めの画面は00という名前にしてあります)正解ページと次の問題画面が一緒なので22ページになります。実際ページにつけた番号は21までですが・・・
間違った答えのページに行くと「previous」で前の画面に戻ったり、間違った答えのページでは下に表示してある回答ボタンを押せないようにしたりしたいです。一画面一画面ifで設定する必要があるのでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
あなたはどの程度できるのでしょうか?
それによって解答が変わってきますので。
そして、そもそも何で作りたいのでしょうか?
AWT,swingなどを使ってアプリケーションを作りたいのか?
サーブレット,JSPを使ってweb動くものを作りたいのか?
とりあえず、AWTで既存のコンポーネント(ボタンなどの部品)を使わず作ってみましたので参考にしていただけると幸いです。
package gui;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Quiz extends Applet implements MouseListener{
//この中には問題文を書きましょう。
//なお、改行コードは\nです
final String[] question={"1+1=?","5-2=?","3*5=?","24/6=?"," "};
//この中には正解を書きましょう。
final String[] answer={" ","2番が正解\n1+1=2","1番が正解\n5-2=3",
"3番が正解\n3*5=15","1番が正解\n24/6=4"};
//回等の選択肢
final String[][] select={{"1) 1","2) 2","3) 3"}
,{"1) 3","2) 4","3) 5"}
,{"1) 9","2) 12","3) 15"}
,{"1) 4","2) 5","3) 6"}
,{" "," "," "}};
//正解の番号
final int[] seikai={1,0,2,0};
//各問題で何番を選択したか
//question.lengthは問題数
int[] choice=new int[question.length];
//点数
int point;
//現在のページ
int index=0;
//lock==trueになると再回答できなくなる
boolean[] lock=new boolean[question.length];
//ダブルバッファのために宣言
//ダブルバッファ処理をすることで
//画面のちらつき防止になる
Graphics gr;
Image img;
public void init(){
//画面のサイズ設定
setSize(300,300);
//マウスリスナの追加
addMouseListener(this);
//フォントの設定
setFont(new Font("MS UI Gothic",Font.PLAIN,30));
//ダブルバッファ処理
img=createImage(240,480);
gr=img.getGraphics();
}
//描画処理
public void paint(Graphics g){
if(index<question.length){
//解答欄の背景描画
g.setColor(new Color(255,128,128,128));
g.fillRect(0,0,300,90);
//問題欄の背景描画
g.setColor(new Color(128,128,255,128));
g.fillRect(0,90,300,90);
g.setColor(new Color(128,255,255));
//解答の描画
g.drawString(answer[index],0,25);
g.setColor(new Color(255,255,128));
//問題の描画
g.drawString(question[index],0,115);
//選択中の選択肢のフォントカラーを変化
for(int i=0;i<3;i++){
if(choice[index]==i)g.setColor(new Color(255,255,0,128));
else g.setColor(new Color(0,0,0));
g.drawString(select[index][i],0,i*30+205);
}
//前のページへボタンの背景描画
g.setColor(new Color(255,128,128,128));
g.fillRect(0,270,150,30);
//次のページへボタンの背景描画
g.setColor(new Color(128,128,255,128));
g.fillRect(150,270,150,30);
g.setColor(new Color(0,0,0));
//前のページへボタンの文字描画
g.drawString("前のページへ",0,295);
//次のページへボタンの文字描画
g.drawString("次のページへ",150,295);
//結果表示のページの描画
}else{
g.setColor(new Color(0,255,0));
g.fillRect(0,0,300,300);
g.setColor(new Color(255,0,0));
g.setFont(new Font("MS UI G0thic",Font.BOLD,50));
g.drawString("ポイント:".concat(String.valueOf(point)),0,150);
}
}
//マウスがクリックされたときの処理
public void mouseClicked(MouseEvent e){
//最終問題ページでクリックしたら結果表示ページにいく
if(index==question.length-1)index++;
//選択肢をクリックするとその選択肢を選択する
for(int i=0;i<3;i++){
if(e.getY()>i*30+180&&e.getY()<i*30+210&&lock[index]==false)choice[index]=i;
}
//前のページへボタンを押すと前のページに戻る
if(index>0&&e.getY()>270&&e.getX()<150)index--;
//次のページへボタンを押すと
if(index<question.length-1&&e.getY()>270&&e.getX()>150){
//このページの回答をできないようにする
lock[index]=true;
//選択した答えと解答が同じなら点数を追加
if(seikai[index]==choice[index])point++;
//次のページへ進む
index++;
}
//再描画処理
repaint();
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}
回答ありがとうございます。
初心者なのでうまく説明できなくてすみません。
質問をもうひとつ載せたので回答していただけるとありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Androidで画像の中で指定した範...
-
C#のGraphicsクラスについてです。
-
VB.NETのSendMessageを教えてく...
-
JTableの特定セルの背景色を変更
-
iアプリでポップアップメニュー...
-
Android画面の作り方
-
Java、jPanelに描画する
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
VBA 同じ名前のオブジェクトを...
-
オブジェクト参照がオブジェク...
-
エクセルVBA 画像を貼り付ける...
-
VB.netでメソッドからコントロ...
-
VB.NET getとsetの概念がわかり...
-
配列の重複する値とその個数を...
-
数学の計算問題。 3年間同じク...
-
インスタンス参照でアクセスで...
-
サーブレットコンテキストの意...
-
オートシェイプの位置がずれる...
-
private static という変数の修飾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# リストビューの特定のセルの...
-
VB.NETのSendMessageを教えてく...
-
C# DataGridView のCellPaintin...
-
PDF帳票を作成するためのフリー...
-
JAVAでの背景画像表示
-
VB.NET フォーム上に描いたグ...
-
SwingとEDT(イベントディスパッ...
-
アクセスで他アプリから復帰し...
-
Labelコントロールの背景をグラ...
-
Androidのフォントサイズ(SP)と...
-
画面のちらつきの原因が知りた...
-
Canvas等の図形を移動する時,直...
-
複数画像表示切り替え Visual c++
-
javaでクイズ
-
Androidで画像の中で指定した範...
-
C#のGraphicsクラスについてです。
-
C# テキストボックスについて
-
描画してもウィンドウをリサイ...
-
VS Treeview のデザイン変更
-
GDI+で描画した画像を消去する...
おすすめ情報