[Andoroid]初心者を助けてくださいおねがいします

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ほんま

[Andoroid]初心者を助けてくださいおねがいします

#1

投稿記事 by ほんま » 13年前

プログラムもまともに書けないものだがお手柔らかにお願いします。今学習で使っているのが
です。

その本の中で二章の数字合わせパズルをやっています。一回ソースを書いたのですがエラーが多く、一回サンプルのソースを当ててみましたがエラーが出てしまいました。えーと何から張ればよいですかね?とりまメインの.javaをはります

コード:

package com.example.numericpuzzle;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.SystemClock;
//import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.ImageButton;

public class NumericPuzzle extends Activity {
    static final int imageButtons[] = {
        R.id.image_button1, R.id.image_button2, R.id.image_button3,R.id.image_button4,
        R.id.image_button5, R.id.image_button6,R.id.image_button7, R.id.image_button8,
        R.id.image_button9,R.id.image_button10,R.id.image_button11,R.id.image_button12,
        R.id.image_button13,R.id.image_button14,R.id.image_button15,R.id.image_button16,
    };

    static final int numImages[] = {
        R.drawable.num1, R.drawable.num2, R.drawable.num3,R.drawable.num4,
        R.drawable.num5, R.drawable.num6, R.drawable.num7, R.drawable.num8,
        R.drawable.num9, R.drawable.num10,R.drawable.num11, R.drawable.num12,
        R.drawable.num13, R.drawable.num14,R.drawable.num15,R.drawable.blank,
    };
    private boolean gameStarted = false;

    OrderController orders[] =
        new OrderController[imageButtons.length];

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        createOrderController();
        setStartButtonListener();

    }
    private void createOrderController() {
        for(int i=0; i<imageButtons.length; ++i) {
             ImageButton imgbtn =
                 (ImageButton)findViewById(imageButtons[i]);
             orders[i]= new OrderController(imgbtn, i,numImages[i]);
         }
     }
    private void startGame() {
        int size = numImages.length;
        for(int i=0; i<size-2; ++i) {
            int swap = (int)(Math.random()*(size-(i+1)));
            orders[i].swapImage(orders[i+swap]);
        }
        gameStarted = true;
    }
    private boolean isCompleted() {
    	if (!(gameStarted)) {
    		return false;
    	}
        for(int i=0; i<numImages.length; ++i) {
            if (numImages[i] != orders[i].getImageRes())
                return false;
        }
        return true;
    }
    private void startChronometer() {
        Chronometer chrono =
            (Chronometer)findViewById(R.id.chronometer);
        chrono.setBase(SystemClock.elapsedRealtime());
        chrono.start();
    }
    private long stopChronometer() {
        Chronometer chrono =
            (Chronometer)findViewById(R.id.chronometer);
        chrono.stop();
        return SystemClock.elapsedRealtime() - chrono.getBase();
    }

    private void setStartButtonListener() {
        Button btn = (Button)findViewById(R.id.start_button);
        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                startGame();
                startChronometer();
            }});
    }

    private void complete() {
        long msec = stopChronometer();
        AlertDialog.Builder alertDlgBld = new AlertDialog.Builder(this);
        alertDlgBld.setTitle(R.string.complete_title);
        alertDlgBld.setMessage(msec/1000 + " 秒");
        alertDlgBld.setPositiveButton(
            R.string.complete_button,
            new DialogInterface.OnClickListener(){
                // ボタンが押されたらダイアログを閉じる
                public void onClick(DialogInterface dialog,int which) {
                    dialog.dismiss();
                }
            });
        alertDlgBld.show();
    }
    private void searchDir(int idx) {
        boolean searchRight = true;
        boolean searchLeft = true;
        boolean searchUp = true;
        boolean searchDown = true;
        if (idx < 4) {
        	searchUp=false;
        }
        if (idx > 11) {
        	searchDown=false;
        }
        if ((idx % 4) ==0) {
        	searchLeft=false;
        }
        if ((idx % 4) ==3) {
        	searchRight=false;
        }
        if (searchUp) {
        	if (searchUp(idx)) {
        		return;
        	}
        }
        if (searchDown) {
        	if (searchDown(idx)) {
        		return;
        	}
        }
        if (searchLeft) {
        	if (searchLeft(idx)) {
        		return;
        	}
        }
        if (searchRight) {
        	if (searchRight(idx)) {
        		return;
        	}
        }
    }
    private boolean searchUp(int idx) {
    	int distance =0;
        //Log.v("SearchUp","idx=" + idx);
        for(int i=idx - 4  ; i> -1 ; i-=4) {
        	distance--;
        	if (orders[i].getImageRes()==R.drawable.blank) {
        		swapUp(idx,distance);
        		return true;
        	}
        }
        return false;
    }
    private boolean searchDown(int idx) {
    	int distance =0;
        //Log.v("SearchDown","idx=" + idx);
        for(int i=idx + 4  ; i< 16 ;  i+=4) {
        	distance++;
        	if (orders[i].getImageRes()==R.drawable.blank) {
        		swapDown(idx,distance);
        		return true;
        	}
        }
        return false;
    }
    private boolean searchLeft(int idx) {
    	int distance =0;
    	int min =0;
        //Log.v("SearchLeft","idx=" + idx);
        min = idx - (idx % 4);
        for(int i=idx - 1  ; i>= min  ; i--) {
        	distance--;
        	if (orders[i].getImageRes()==R.drawable.blank) {
        		swapLeft(idx,distance);
        		return true;
        	}
        }
        return false;
    }
    private boolean searchRight(int idx) {
    	int distance =0;
    	int max =15;
    	//Log.v("SearchRight","idx=" + idx);
        max = (idx+ 4) - (idx + 4) % 4 ;
        for(int i=idx + 1  ; i< max ; i++) {
        	distance++;
        	if (orders[i].getImageRes()==R.drawable.blank) {
        		swapRight(idx,distance);
        		return true;
        	}
        }
        return false;
    }
	private void swapUp(int idx, int distance) {
        for(int i=idx+(distance * 4); i<idx; i+=4) {
            orders[i].swapImage(orders[i+4]);
        }
	}
	private void swapDown(int idx, int distance) {
        for(int i=idx+(distance * 4); i>idx; i-=4) {
            orders[i].swapImage(orders[i-4]);
        }
	}
	private void swapLeft(int idx, int distance) {
        for(int i=idx+distance; i<idx; i++) {
            orders[i].swapImage(orders[i+1]);
        }
	}
	private void swapRight(int idx, int distance) {
        for(int i=idx+distance; i>idx; i--) {
            orders[i].swapImage(orders[i-1]);
        }
	}
    class OrderController implements View.OnClickListener {
        ImageButton imgBtn;
        int idx = 0;
        int curImageId = 0;

        public OrderController(ImageButton ibtn,int i,int resid)	{
        	imgBtn = ibtn;
        	idx = i;
            setImageRes(resid);
            imgBtn.setOnClickListener(this);
        }

        public int setImageRes(int resid) {
            int old = curImageId;
            curImageId = resid;
            imgBtn.setImageResource(resid);
            return old;
        }
        public int getImageRes() {
            return curImageId;
        }
        public void onClick(View v) {
        	if (curImageId == R.drawable.blank) {
        		return;
        	}
            searchDir(idx);

            if (isCompleted())
                complete();
        }
        public void swapImage(OrderController other) {
            int previous = other.setImageRes(curImageId);
            setImageRes(previous);
        }
	}

エラーのマーカーは

説明 リソース パス ロケーション 型
public 型 NumericPuzzle はそれ独自のファイル内に定義されなければなりません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 14 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 16 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 16 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 16 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 16 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 17 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 17 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 17 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 17 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 18 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 18 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 18 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 18 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 19 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 19 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 19 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 19 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 23 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 23 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 23 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 23 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 24 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 24 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 24 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 24 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 25 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 25 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 25 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 25 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 26 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 26 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 26 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 26 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 37 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 69 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 75 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 81 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 92 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 95 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 147 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 159 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 173 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 187 Java 問題
R を変数に解決できません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 236 Java 問題
宣言されたパッケージ "com.example.numericpuzzle" が、予想されているパッケージ "com.example.numericpuzzie" に一致しません NumeriPuzzie.java /NumericPuzzie/src/com/example/numericpuzzie 行 1 Java 問題


・・・・です あまりにも初心者なので、解決に必要なものがありましたら返信していきたいと思います。よろしくおねがいします。

h24i17

Re: [Andoroid]初心者を助けてくださいおねがいします

#2

投稿記事 by h24i17 » 13年前

エディタはeclipseを使われていますか?(その前提で話をします)

projectは本に書いてある通り問題なく作れたでしょうか?
ちゃんと作れているのなら、おそらく問題はR.javaの定義が自動で更新されていないためだと思われます


layoutを定義してあるmain.xml(ファイル名は違うかもしれません)で多分android:id=@+id/image_button1などと書かれている箇所があると思いますが、それはちゃんと書けていますか?


もし、それもほんの通りにちゃんとしているのにコンパイルが通らない場合はR.javaの更新をeclipseが自動でできていないためだと考えられます
http://techbooster.jpn.org/andriod/environment/5796/
このサイトあたりが参考になるかもしれません

ほんま

Re: [Andoroid]初心者を助けてくださいおねがいします

#3

投稿記事 by ほんま » 13年前

返信ありがとうございます。
R.javaはxmlファイルにエラーがあったときには更新されないらしくEclipceのほうの問題ではなかったようです。エラーの原因がNumericPuzzleのところをNumericPuzzieになってしまっただけでした^^; 一番メインの.javaの一行目からマーカーが入っていて気付きましたw
お騒がせしてすいませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る