OSDN Git Service

implement mark and send(halfway)
authorYuta Kawabe <yuyu3165@gmail>
Wed, 17 Oct 2012 04:29:24 +0000 (13:29 +0900)
committerYuta Kawabe <yuyu3165@gmail>
Wed, 17 Oct 2012 04:29:24 +0000 (13:29 +0900)
ECC/res/values/code.xml
ECC/src/jp/ac/titech/sharp4k/cuten/sampletask/ECCTask.java
ECC/src/jp/ac/titech/sharp4k/cuten/sampletask/MatrixView.java

index ffd41ac..2b172d0 100644 (file)
@@ -1,10 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
+
     <integer name="row">5</integer>
     <integer name="col">8</integer>
     <integer name="checkrow">5</integer>
     <integer name="checkcol">8</integer>
+
     <string-array name="code">
+
         <!-- 1 -->
         <item>1</item>
         <item>0</item>
         <item>0</item>
         <item>0</item>
     </string-array>
+
+    <integer-array name="answer">
+        <item>11</item>
+        <item>30</item>
+    </integer-array>
+
 </resources>
\ No newline at end of file
index e000c0a..5086a23 100644 (file)
@@ -15,11 +15,13 @@ public class ECCTask extends BaseApp {
        private Context ctx;
        private Resources res;
        MatrixView mv;
+       int[] result;
 
        @Override
        protected View createView(Context ctx, Resources res) {
                this.ctx = ctx;
                this.res = res;
+               result = new int[1];
                // set layout
                RelativeLayout reLay = new RelativeLayout(ctx);
                // textview
@@ -69,13 +71,19 @@ public class ECCTask extends BaseApp {
                                mv.reset();
                        }
                });
+               finish.setOnClickListener(new OnClickListener() {
+                       @Override
+                       public void onClick(View v) {
+                               result[0] = mv.finish();
+                       }
+               });
 
                return reLay;
        }
 
        @Override
        protected void onClose() {
-
+               sendResult(result);
                super.onClose();
        }
 }
index 06ef5e2..9c8be65 100644 (file)
@@ -15,21 +15,27 @@ import android.view.MotionEvent;
 import android.view.View;
 
 public class MatrixView extends View {
+       Context ctx;
        Resources res;
        float width, height;
        int row, col, checkrow, checkcol;
+       int[] cAnswer;
+       ArrayList<Integer> uAnswer;
        String[] bits;
        ArrayList<Rect> selRects;
 
-       public MatrixView(Context context, Resources res) {
-               super(context);
+       public MatrixView(Context ctx, Resources res) {
+               super(ctx);
                setFocusable(true);
                setFocusableInTouchMode(true);
+               this.ctx = ctx;
                this.res = res;
                row = res.getInteger(R.integer.row);
                col = res.getInteger(R.integer.col);
                checkrow = res.getInteger(R.integer.checkrow);
                checkcol = res.getInteger(R.integer.checkcol);
+               cAnswer = res.getIntArray(R.array.answer);
+               uAnswer = new ArrayList<Integer>();
                bits = res.getStringArray(R.array.code);
                selRects = new ArrayList<Rect>();
        }
@@ -105,6 +111,7 @@ public class MatrixView extends View {
                if (event.getAction() != MotionEvent.ACTION_DOWN) {
                        return super.onTouchEvent(event);
                } else {
+                       // position
                        int selX, selY;
                        selX = (int) (event.getX() / width);
                        selY = (int) (event.getY() / height);
@@ -112,11 +119,15 @@ public class MatrixView extends View {
                                        || selX == checkcol || selY == checkrow) {
                                return true;
                        }
+                       // create Rect
                        Rect r = new Rect();
                        r.set((int) (selX * width), (int) (selY * height), (int) (selX
                                        * width + width), (int) (selY * height + height));
                        if (!selRects.remove(r)) {
                                selRects.add(r);
+                               uAnswer.add((selY - 1) * col + selX);
+                       } else {
+                               uAnswer.remove((Object) ((selY - 1) * col + selX));
                        }
                        if (bits[(selY - 1) * col + (selX - 1)].equals("0")) {
                                bits[(selY - 1) * col + (selX - 1)] = new String("1");
@@ -130,8 +141,27 @@ public class MatrixView extends View {
 
        public void reset() {
                bits = res.getStringArray(R.array.code);
+               uAnswer = new ArrayList<Integer>();
                selRects = new ArrayList<Rect>();
                invalidate();
        }
 
+       public int finish() {
+               boolean check;
+               if (uAnswer.size() == cAnswer.length) {
+                       for (int i = 0; i < cAnswer.length; i++) {
+                               check = false;
+                               for (int j = 0; j < uAnswer.size(); j++) {
+                                       if (cAnswer[i] == uAnswer.get(j)) {
+                                               check = true;
+                                       }
+                               }
+                               if (!check) {
+                                       return 0;
+                               }
+                       }
+                       return 100;
+               }
+               return 0;
+       }
 }
\ No newline at end of file