私はとても必死なので、ここに投稿するのはこれが初めてです。とにかく、私はこのプロジェクトを持っていますが、キューの実装に問題があります。私の Android アプリは、キューを使用して実装された rebus パズルです。ゲームの開始時に、各パズルの答えを含むすべてのノードをキューに入れたいと思います。次に、パズルの写真が表示され、ユーザーが答えを入力できるテキストフィールドとボタンが表示されます。私の問題は、Java でキューを実装する方法がわからないことです。ボタンを押して回答を送信すると、現在のノードがデキューされ、レベルが上がり、同時に別の画像が表示されます。しかし、ユーザーの答えが間違っている場合は、現在のパズルにとどまります。
パズルノードのコードは次のとおりです。
package com.project.rebus;
public class PuzzleNode {
private String answer;
private PuzzleNode next;
public PuzzleNode(String answer, PuzzleNode next) {
this.answer = answer;
this.next = next;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public PuzzleNode getNext() {
return next;
}
public void setNext(PuzzleNode next) {
this.next = next;
}
}
キューのコードは次のとおりです。
package com.project.rebus;
public class PuzzleQueue {
PuzzleNode head;
PuzzleNode tail;
int size;
int score;
public PuzzleQueue() {
head = null;
tail = null;
size = 0;
score = 0;
}
public int size() {
return size;
}
public boolean isEmpty() {
if(head == null)
return true;
else
return false;
}
public void enqueue (PuzzleNode data)
{
PuzzleNode n = new PuzzleNode(data.getAnswer(), null);
if (tail != null)
tail.setNext(n);
tail = n;
if (head == null)
head = n;
size++;
}
public String dequeue ()
{
String temp;
temp = head.getAnswer();
head = head.getNext();
size--;
if (size == 0)
tail = null;
return temp;
}
public String front()
{
return head.getAnswer();
}
public boolean compare(String answer) {
if (head.getAnswer().equalsIgnoreCase(answer))
return true;
else return false;
}
}
キューを実装する Android のアクティビティ ワンのコードは次のとおりです。
package com.project.rebus;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
public class RebusActivityOne extends Activity {
PuzzleQueue rebus = new PuzzleQueue();
PuzzleNode p1 = new PuzzleNode("for instance", null);
PuzzleNode p2 = new PuzzleNode("too funny for words", null);
PuzzleNode p3 = new PuzzleNode("once in a blue moon", null);
int level = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rebus_activity_one);
ImageView image = (ImageView) findViewById (R.drawable.r1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.rebus_activity_one, menu);
return true;
}
public void button (View view) {
rebus.enqueue(p1);
rebus.enqueue(p2);
rebus.enqueue(p3);
ImageView image = null;
while (level <= 3) {
if (level == 1) {
image = (ImageView) findViewById (R.id.r1);
}else if (level == 2) {
image.setImageResource(R.drawable.r2);
}else if (level == 3) {
image.setImageResource(R.drawable.r3);
}
boolean correct = false;
do {
EditText answerField = (EditText)findViewById(R.id.answerField);
String answer = answerField.getText().toString();
if (rebus.compare(answer) == true) {
correct = true;
rebus.dequeue();
level++;
}//else System.out.println("Wrong answer");
}while(correct == false);
}
}
}
ボタンコードでエラーが発生し続けます。IDK もう何をすべきか。ふふふ。どんな助けでも大歓迎です。