Code Monkey home page Code Monkey logo

colortile's Introduction

カラータイル自動求解

概要

カラータイルというゲームを自動的に求解しようというプログラムです。 もちろん全消しを狙っています。

ゲームのルール

23x15の盤面に200個のタイルが並べられます。タイルには10色の色が割り当てられています。これらのタイルを2分間に次のルールに従って消していき、消した個数が点数となります。

  • 空マスをクリックする。タイルの存在するマスをクリックしても何も起こらない。
  • クリックしたマス目の上下左右のタイルで最も近いタイル(空マスのみを挟んで隣接する)のうちで、同じ色のタイルが2つ以上存在すればそれらを消去し、マスを空マスにする。
  • もし空マスをクリックした時に消えるタイルがなければペナルティとして時間が消費される。

細かな特徴

カラーコード

タイルの色のカラーコードです。明るい方はやや怪しいです。

Color Dark Light
Background#EDEDED#F7F7F7
Gray #BBBBBB#D6D6D6
Blue #0066FF#5C9DFF
Cyan #66CCCC#9DDFDF
Green #00CC00#63E063
Yellow #CCCC66#DFDFA0
Brown #CC6600#E0A366
Orange #FF9900#FFC260
Red #FF6666#FFA3A3
Pink #FF88FF#FFB4FF
Magenta #CC66CC#E0A3E0

色の判別

暫定的に色の判別方法を決定する。色のRGB値をそれぞれR,G,Bで表現する。

  1. R=G=B なら#E0E0E0以下か以上かでgrayemptyかを判定する。
  2. R<G<B ならblue
  3. R<G=B ならcyan
  4. B=R<G ならgreen
  5. B<R=G ならyellow
  6. R>G>B ならRが0xffのときはorangeで、それ以外はbrownと判定。 あるいは、Gが0xbb以上ならorangeで、それ以外はbrownとか。
  7. R>G=B ならred
  8. G<B=R ならRが0xffのときはpinkで、それ以外はmagentaと判定。

実装

探索

####探索手法 探索手法としては次の2つが考えられる。

  1. 深さ優先探索でガンガン進める。ただ、合法手の選択時になるべく前から選ぶのが速いんだろうか、という疑問がある。もちろん効率的なのかも疑問。

  2. A*探索する。最小コスト関数は残りのタイル数/2とかでいい。ただ、結構先まで幅優先的に進んでいく気がして重そう。詰みを検出できないと意味がないのでダメかもしれない。

終了条件

もちろんすべてのタイルがなくなれば勝ちとなる。負けになる条件は合法手が取れなくなることにほかならないのだが、早く見切りをつけるためにいくつか用意する。

  • 合法手がない
  • ある色のタイルが1つしかない
  • ある色のタイルが3つしかなく、どの二つも直線上にない

colortile's People

Contributors

xkikeg avatar

Stargazers

 avatar Watanabe Rui avatar naoppy avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.