0

私はとても必死なので、ここに投稿するのはこれが初めてです。とにかく、私はこのプロジェクトを持っていますが、キューの実装に問題があります。私の 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 もう何をすべきか。ふふふ。どんな助けでも大歓迎です。

4

0 に答える 0