{"id":153,"date":"2018-11-17T00:08:28","date_gmt":"2018-11-16T15:08:28","guid":{"rendered":"https:\/\/dalomo.net\/blog\/?p=153"},"modified":"2018-11-17T00:08:28","modified_gmt":"2018-11-16T15:08:28","slug":"android%e3%82%a2%e3%83%97%e3%83%aa-%e3%83%aa%e3%83%90%e3%83%bc%e3%82%b7%e3%81%ae%e3%82%bd%e3%83%bc%e3%82%b9-board-java","status":"publish","type":"post","link":"https:\/\/dalomo.net\/blog\/2018\/11\/17\/153\/","title":{"rendered":"Android\u30a2\u30d7\u30ea \u30ea\u30d0\u30fc\u30b7\u306e\u30bd\u30fc\u30b9 (Board.java)"},"content":{"rendered":"<pre>package net.dalomo.reversi;\r\n\r\nimport android.content.Context;\r\nimport android.view.View;\r\nimport android.widget.TextView;\r\nimport android.widget.Toast;\r\n\r\npublic class Board {\r\n    final int BLACK = 1;\r\n    final int WHITE = -1;\r\n    int PlayerTurn = 1;\r\n    private Context con;\r\n    private View parentView;\r\n\r\n    public Board(Context context){\r\n        this.con = context;\r\n    }\r\n\r\n    private TextView getTextViewFromTag (int a, int b){\r\n        String s = String.valueOf(a) + String.valueOf(b);\r\n        TextView res = parentView.findViewWithTag(s);\r\n        return res;\r\n    }\r\n\r\n    private Integer SplitStrRCtoIntRow (String s){\r\n        int r;\r\n        r = Integer.parseInt(s.substring(0,1));\r\n        return r;\r\n    }\r\n\r\n    private Integer SplitStrRCtoIntColumn (String s){\r\n        int c;\r\n        c = Integer.parseInt(s.substring(1));\r\n        return c;\r\n    }\r\n\r\n    private String TagToString(TextView v){\r\n        String s;\r\n        s = v.getTag().toString();\r\n        return s;\r\n    }\r\n\r\n    private boolean existStone(TextView v){\r\n        return !(v.getText().toString().equals(\"\"));\r\n    }\r\n\r\n    private int getStoneColor(TextView v){\r\n        int sc = 0;\r\n\r\n        switch (v.getText().toString()){\r\n            case(\"\u25cf\"):\r\n                sc = BLACK;\r\n                break;\r\n            case(\"\u25cb\"):\r\n                sc = WHITE;\r\n        }\r\n        return sc;\r\n    }\r\n\r\n    private void setStoneToCell(TextView v){\r\n        switch(PlayerTurn){\r\n            case(BLACK):\r\n                v.setText(\"\u25cf\");\r\n                break;\r\n            case(WHITE):\r\n                v.setText(\"\u25cb\");\r\n                break;\r\n        }\r\n    }\r\n\r\n    private void CheckFlipUP(TextView v,int r,int c){\r\n        TextView tv;\r\n        int StoneColor;\r\n        int StoneCount = 0;\r\n\r\n        for(int ui = (r - 1) ; -1 &lt; ui ; ui-- ){\r\n            tv = getTextViewFromTag(ui,c);\r\n\r\n            if(tv == null) return;\r\n\r\n            if(!existStone(tv)){\r\n                break;\r\n            }\r\n\r\n            StoneColor = getStoneColor(tv);\r\n\r\n            if(PlayerTurn == StoneColor &amp;&amp; StoneCount &lt; 1){\r\n                break;\r\n            }\r\n\r\n            if(PlayerTurn != StoneColor){\r\n                StoneCount++;\r\n                continue;\r\n            }\r\n\r\n            if(PlayerTurn == StoneColor){\r\n\r\n                setStoneToCell(v);\r\n\r\n                for(int j = (ui + 1) ; (ui + StoneCount + 1) &gt; j ; j++){\r\n                    tv = getTextViewFromTag(j,c);\r\n                    setStoneToCell(tv);\r\n                }\r\n\r\n                break;\r\n            }\r\n         }\r\n    }\r\n\r\n    private void CheckFlipDOWN(TextView v,int r,int c){\r\n        TextView tv;\r\n        int StoneColor;\r\n        int StoneCount = 0;\r\n\r\n        for(int di = (r + 1) ; 8 &gt; di ; di++ ){\r\n            tv = getTextViewFromTag(di,c);\r\n\r\n            if(tv == null) return;\r\n\r\n            if(!existStone(tv)){\r\n                break;\r\n            }\r\n\r\n            StoneColor = getStoneColor(tv);\r\n\r\n            if(PlayerTurn == StoneColor &amp;&amp; StoneCount &lt; 1){\r\n                break;\r\n            }\r\n\r\n            if(PlayerTurn != StoneColor){\r\n                StoneCount++;\r\n                continue;\r\n            }\r\n\r\n            if(PlayerTurn == StoneColor){\r\n\r\n                setStoneToCell(v);\r\n\r\n                for(int j = (di - 1) ; (di - StoneCount - 1) &lt; j ; j--){\r\n                    tv = getTextViewFromTag(j,c);\r\n                    setStoneToCell(tv);\r\n                }\r\n\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private void CheckFlipRIGHT(TextView v,int r,int c){\r\n        TextView tv;\r\n        int StoneColor;\r\n        int StoneCount = 0;\r\n\r\n        for(int ri = (c + 1) ; 8 &gt; ri ; ri++ ){\r\n            tv = getTextViewFromTag(r,ri);\r\n\r\n            if(tv == null) return;\r\n\r\n            if(!existStone(tv)){\r\n                break;\r\n            }\r\n\r\n            StoneColor = getStoneColor(tv);\r\n\r\n            if(PlayerTurn == StoneColor &amp;&amp; StoneCount &lt; 1){\r\n                break;\r\n            }\r\n\r\n            if(PlayerTurn != StoneColor){\r\n                StoneCount++;\r\n                continue;\r\n            }\r\n\r\n            if(PlayerTurn == StoneColor){\r\n\r\n                setStoneToCell(v);\r\n\r\n                for(int j = (ri - 1) ; (ri - StoneCount - 1) &lt; j ; j--){\r\n                    tv = getTextViewFromTag(r,j);\r\n                    setStoneToCell(tv);\r\n                }\r\n\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private void CheckFlipLEFT(TextView v,int r,int c){\r\n        TextView tv;\r\n        int StoneColor;\r\n        int StoneCount = 0;\r\n\r\n        for(int li = (c - 1) ; -1 &lt; li ; li-- ){\r\n            tv = getTextViewFromTag(r,li);\r\n\r\n            if(tv == null) return;\r\n\r\n            if(!existStone(tv)){\r\n                break;\r\n            }\r\n\r\n            StoneColor = getStoneColor(tv);\r\n\r\n            if(PlayerTurn == StoneColor &amp;&amp; StoneCount &lt; 1){\r\n                break;\r\n            }\r\n\r\n            if(PlayerTurn != StoneColor){\r\n                StoneCount++;\r\n                continue;\r\n            }\r\n\r\n            if(PlayerTurn == StoneColor){\r\n\r\n                setStoneToCell(v);\r\n\r\n                for(int j = (li + 1) ; (li + StoneCount + 1) &gt; j ; j++){\r\n                    tv = getTextViewFromTag(r,j);\r\n                    setStoneToCell(tv);\r\n                }\r\n\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private void CheckFlipUPRIGHT(TextView v,int r,int c){\r\n        TextView tv;\r\n        int StoneColor;\r\n        int StoneCount = 0;\r\n\r\n        for(int urr = (r - 1),urc = (c + 1) ; -1 &lt; urr || urc &lt; 8 ; urr--, urc++){\r\n            tv = getTextViewFromTag(urr, urc);\r\n\r\n            if(tv == null) return;\r\n\r\n            if (!existStone(tv)) {\r\n                break ;\r\n            }\r\n\r\n            StoneColor = getStoneColor(tv);\r\n\r\n            if (PlayerTurn == StoneColor &amp;&amp; StoneCount &lt; 1) {\r\n                break ;\r\n            }\r\n\r\n            if (PlayerTurn != StoneColor) {\r\n                StoneCount++;\r\n                continue ;\r\n            }\r\n\r\n            if (PlayerTurn == StoneColor) {\r\n\r\n                setStoneToCell(v);\r\n\r\n                for (int inurr = (urr + 1),inurc = (urc - 1 ) ; (urr + StoneCount + 1) &gt; inurr || (urc - StoneCount - 1) &lt; inurc; inurr++, inurc--) {\r\n                        tv = getTextViewFromTag(inurr, inurc);\r\n                        setStoneToCell(tv);\r\n                }\r\n\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private void CheckFlipDOWNRIGHT(TextView v,int r,int c){\r\n        TextView tv;\r\n        int StoneColor;\r\n        int StoneCount = 0;\r\n\r\n        for(int drr = (r + 1),drc = (c + 1) ; drr &lt; 8 || drc &lt; 8 ; drr++ , drc++){\r\n            tv = getTextViewFromTag(drr, drc);\r\n\r\n            if(tv == null) return;\r\n\r\n            if (!existStone(tv)) {\r\n                break ;\r\n            }\r\n\r\n            StoneColor = getStoneColor(tv);\r\n\r\n            if (PlayerTurn == StoneColor &amp;&amp; StoneCount &lt; 1) {\r\n                break ;\r\n            }\r\n\r\n            if (PlayerTurn != StoneColor) {\r\n                StoneCount++;\r\n                continue ;\r\n            }\r\n\r\n            if (PlayerTurn == StoneColor) {\r\n\r\n                setStoneToCell(v);\r\n\r\n                for (int indrr = (drr - 1),indrc = (drc - 1 ) ; (drr - StoneCount - 1) &lt; indrr || (drc - StoneCount - 1) &lt; indrc; indrr--, indrc--) {\r\n                    tv = getTextViewFromTag(indrr, indrc);\r\n                    setStoneToCell(tv);\r\n                }\r\n\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private void CheckFlipDOWNLEFT(TextView v,int r,int c){\r\n        TextView tv;\r\n        int StoneColor;\r\n        int StoneCount = 0;\r\n\r\n        for(int dlr = (r + 1),dlc = (c - 1) ; dlr &lt; 8 || -1 &lt; dlc ; dlr++ , dlc--){\r\n            tv = getTextViewFromTag(dlr, dlc);\r\n\r\n            if(tv == null) return;\r\n\r\n            if (!existStone(tv)) {\r\n                break ;\r\n            }\r\n\r\n            StoneColor = getStoneColor(tv);\r\n\r\n            if (PlayerTurn == StoneColor &amp;&amp; StoneCount &lt; 1) {\r\n                break ;\r\n            }\r\n\r\n            if (PlayerTurn != StoneColor) {\r\n                StoneCount++;\r\n                continue ;\r\n            }\r\n\r\n            if (PlayerTurn == StoneColor) {\r\n\r\n                setStoneToCell(v);\r\n\r\n                for (int indlr = (dlr - 1),indlc = (dlc + 1 ) ; (dlr - StoneCount - 1) &lt; indlr || (dlc + StoneCount + 1) &gt; indlc; indlr--, indlc++) {\r\n                    tv = getTextViewFromTag(indlr, indlc);\r\n                    setStoneToCell(tv);\r\n                }\r\n\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private void CheckFlipUPLEFT(TextView v,int r,int c){\r\n        TextView tv;\r\n        int StoneColor;\r\n        int StoneCount = 0;\r\n\r\n        for(int ulr = (r - 1), ulc = (c - 1) ; -1 &lt;ulr || -1 &lt; ulc ; ulr-- , ulc--){\r\n            tv = getTextViewFromTag(ulr, ulc);\r\n\r\n            if(tv == null) return;\r\n\r\n            if (!existStone(tv)) {\r\n                break ;\r\n            }\r\n\r\n            StoneColor = getStoneColor(tv);\r\n\r\n            if (PlayerTurn == StoneColor &amp;&amp; StoneCount &lt; 1) {\r\n                break ;\r\n            }\r\n\r\n            if (PlayerTurn != StoneColor) {\r\n                StoneCount++;\r\n                continue ;\r\n            }\r\n\r\n            if (PlayerTurn == StoneColor) {\r\n\r\n                setStoneToCell(v);\r\n\r\n                for (int inulr = (ulr + 1),inulc = (ulc + 1 ) ; (ulr + StoneCount + 1) &gt; inulr || (ulc + StoneCount + 1) &gt; inulc; inulr++, inulc++) {\r\n                    tv = getTextViewFromTag(inulr, inulc);\r\n                    setStoneToCell(tv);\r\n                }\r\n\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    public void putStone(TextView tv){\r\n        String stone = tv.getText().toString();\r\n        int Row = SplitStrRCtoIntRow(TagToString(tv));\r\n        int Column = SplitStrRCtoIntColumn(TagToString(tv));\r\n\r\n        parentView = (View) tv.getParent();\r\n\r\n        if(!stone.equals(\"\")){\r\n            Toast.makeText(this.con,\"\u305d\u3053\u306b\u77f3\u306f\u7f6e\u3051\u307e\u305b\u3093\", Toast.LENGTH_SHORT).show();\r\n            return;\r\n        }\r\n\r\n        CheckFlipUP(tv,Row,Column);\r\n        CheckFlipDOWN(tv,Row,Column);\r\n        CheckFlipRIGHT(tv,Row,Column);\r\n        CheckFlipLEFT(tv,Row,Column);\r\n        CheckFlipUPRIGHT(tv,Row,Column);\r\n        CheckFlipDOWNRIGHT(tv,Row,Column);\r\n        CheckFlipDOWNLEFT(tv,Row,Column);\r\n        CheckFlipUPLEFT(tv,Row,Column);\r\n\r\n        stone = tv.getText().toString();\r\n        if(!stone.equals(\"\")) {\r\n            PlayerTurn = PlayerTurn * (-1);\r\n        }\r\n    }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>package net.dalomo.reversi; import android.content.Context; import android.view.View; import android.widget.Te &hellip; <a href=\"https:\/\/dalomo.net\/blog\/2018\/11\/17\/153\/\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[9],"tags":[3,6,4,13],"class_list":["post-153","post","type-post","status-publish","format-standard","hentry","category-9","tag-android","tag-androidstudio","tag-4","tag-13"],"_links":{"self":[{"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/posts\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/comments?post=153"}],"version-history":[{"count":1,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/posts\/153\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/posts\/153\/revisions\/154"}],"wp:attachment":[{"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/media?parent=153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/categories?post=153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/tags?post=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}