四色三消游戏算法

四色三消游戏算法

下面是用python写的四色三消游戏算法,很容易改成更多颜色和行列的。基本思路就是3个一样的diamonds连在一起就可以消除。废话不说,上代码:

#!/usr/bin/python
#-*- coding: UTF-8 -*-
#======================================================================
import os
import sys
import getopt
import time
import random

#======================================================================
# color output
#
def perror(s):
    print ‘\033[31m[ERROR] %s\033[31;m‘ % (s)

def pinfo(s):
    print ‘\033[32m[INFO] %s\033[32;m‘ % (s)

def pwarn(s):
    print ‘\033[33m[WARN] %s\033[33;m‘ % (s)

#----------------------------------------------------------
def red():
    print ‘\033[31mA\033[31;m‘,

def yellow():
    print ‘\033[33mB\033[33;m‘,

def blue():
    print ‘\033[34mC\033[34;m‘,

def green():
    print ‘\033[32mD\033[32;m‘,

def one():
    print ‘\033[31m1\033[31;m‘,

def zero():
    print ‘O‘,

def pout(C):
    if C==‘A‘:
        red()
    elif C==‘B‘:
        yellow()
    elif C==‘C‘:
        blue()
    elif C==‘D‘:
        green()
    else:
        zero()

#==========================================================
# 4 colors and 3 crash for 5x7 diamonds table
CRASH3_COLS = 7
CRASH3_ROWS = 5
CRASH3_COLORS = [‘O‘,‘A‘,‘B‘,‘C‘,‘D‘]

CRASH3_DIAMONDS_TABLE = [
    [0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0],
]

CRASH3_DIAMONDS_RESULT = [
    [0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0],
]

def crash3_print_colors(table):
    for row in range(0, CRASH3_ROWS, 1):
        for col in range(0, CRASH3_COLS, 1):
            color = table[row][col]
            pout(CRASH3_COLORS[color])
        print ‘‘

def crash3_print_values(table):
    for row in range(0, CRASH3_ROWS, 1):
        for col in range(0, CRASH3_COLS, 1):
            V = table[row][col]
            if V == 1:
                one()
            else:
                zero()
        print ‘‘

def crash3_reset_value(table, V):
    for row in range(0, CRASH3_ROWS, 1):
        for col in range(0, CRASH3_COLS, 1):
            table[row][col] = V

def crash3_init_table(table):
    print("\n----------------------\ncrash3_init_table:\n----------------------")
    color = random.randint(1, 4)
    for row in range(0, CRASH3_ROWS, 1):
        for col in range(0, CRASH3_COLS, 1):
            color = random.randint(1, 4)
            table[row][col] = color

def crash3_on_cell(table, result, row, col):
    if col < CRASH3_COLS - 2:
        (a,b,c) = (table[row][col], table[row][col+1], table[row][col+2])
        if a==b and b==c:
            result[row][col] = 0;
            result[row][col+1] = 0;
            result[row][col+2] = 0;

    if row < CRASH3_ROWS - 2:
        (a,b,c) = (table[row][col], table[row+1][col], table[row+2][col])
        if a==b and b==c:
            result[row][col] = 0;
            result[row+1][col] = 0;
            result[row+2][col] = 0;

def crash3_on_trigger(table, result):
    print("\n----------------------\ncrash3_on_trigger:\n----------------------")
    for row in range(0, CRASH3_ROWS, 1):
        for col in range(0, CRASH3_COLS, 1):
            crash3_on_cell(table, result, row, col)

#==========================================================
# main() entry
if __name__ == "__main__":

    pinfo("crash linked 3 diamonds.\ncopyright by cheungmine, all rights reserved!")

    crash3_init_table(CRASH3_DIAMONDS_TABLE)

    crash3_print_colors(CRASH3_DIAMONDS_TABLE)

    crash3_reset_value(CRASH3_DIAMONDS_RESULT, 1)

    crash3_on_trigger(CRASH3_DIAMONDS_TABLE, CRASH3_DIAMONDS_RESULT)

    crash3_print_values(CRASH3_DIAMONDS_RESULT)

运行结果截图,O表示消除,1表示未消除:

实际使用中,很容易改为其他语言的。

时间: 2024-10-13 23:29:54

四色三消游戏算法的相关文章

面向对象分析与设计—四色原型模式(彩色建模、领域无关模型)(概念版)

阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我们真的看见OOAD的希望 5.在四色原型上运用彩色建模增强视觉冲击力 6.通过四色原型模式建模出领域无关模型 7.结束语:建模时你可以不考虑具体实现,但是建模者要懂技术实现 1.背景介绍 至今我都清楚的记得我第一次被面试官问起什么叫"建模"技术时的情景,那是好几年前的事情了,当时是胸有成竹

地图四色着图的C语言实现

四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了四色问题,问题也终于成为定理,这是第一个借助计算机证明的定理.(这段文字来源于百度百科) 这篇文章主要介绍利用C语言实现地图四色着图.主要包括:设计的数据结构:算法实现等. 1 着图的数据结构 着图时无需表示具体的地图多边形,只需要表示多边形的Voronoi图即可,说的简单点可见下图: 对于左边的地

cocos2d 简单消除游戏算法 (一)

1. 游戏视频演示 2.三消游戏我的理解 上面视频中的游戏,我做了2个星期时间,只能算个简单Demo,还有bug,特效也几乎没有.感觉三消游戏主要靠磨,越磨越精品.市场上三消游戏已经超级多了.主流的是地图型的,几乎是无尽模式,各种消除特效,各种各样的过关方式,玩起来还是不错的,就是遇到比较难的关卡,要多试几次,运气非常好的时候就过了,不然卡死. 这个游戏真正扩展的地方就是过关模式,还需要整个特殊的地图编辑器,配合策划,不断升级游戏. 3.消除涉及到的简单算法 3.1 生成随机地图算法 有各种各样

.NET应用架构设计—四色原型模式(色彩造型、域无关的模型)(概念版)

阅读文件夹: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来事实上我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我们真的看见OOAD的希望 5.在四色原型上运用彩色建模增强视觉冲击力 6.通过四色原型模式建模出领域无关模型 7.结束语:建模时你能够不考虑详细实现,可是建模者要懂技术实现 1.背景介绍 至今我都清楚的记得我第一次被面试官问起什么叫"建模"技术时的情景,那是好几年前的事情了.当时是胸有

四种迷宫生成算法

简介 所谓迷宫生成算法,就是用以生成随机的迷宫的算法 迷宫生成算法是处于这样一个场景: 一个row行,col列的网格地图,一开始默认所有网格四周的墙是封闭的 要求在网格地图边缘,也就是网格的边上打通2面墙 所有网格都至少保证网格周围至少有一堵墙打通 所有网格都能通过打通的墙能形成一条通路 博主已实现RecursiveBacktracking(递归回溯),RecursiveSegmentation(递归分割),随机Prim算法,Kruskal+并查集四种迷宫生成算法,这篇文章主要对这四种算法进行简

JAVA安卓植物大战僵尸主题四子棋游戏

@前言 这里使用安卓最基本的API实现双人四子棋游戏(无AI),开发语言为java,开发环境为Android Studio 2.1.2,目标SDK版本为24,最低为15: 界面采用植物大战僵尸主题,图片资源来源于网络,进行了PS加工,非原创: 游戏界面基本可以适配所有安卓手机分辨率,不过在分辨率太大或太小的手机上整体效果会有影响: Github源码: https://github.com/jiangxh1992/FourInRowGame 视频演示: https://vimeo.com/1875

[华为机试练习题]44.24点游戏算法

题目 注意: 6 + 2 * 4 + 10 = 24 不是一个数字一个数字的计算 代码 /*--------------------------------------- * 日期:2015-07-03 * 作者:SJF0115 * 题目:24点游戏算法 * 来源:华为机试练习题 -----------------------------------------*/ #include <iostream> #include <string> #include <vector&

消消乐、candy crush类三消游戏程序逻辑分析

最近在开发一款类似消消乐的三消游戏,在碰到实现斜方向下落的时候卡住了很长时间.好几天没有思路,原本的思路是一次性预判多个宝石的一连串运动路径,运用缓动运动队列来实现宝石运动路径,例如 下落->滑落->下落.用这种方式虽然会提高性能,但发现总是无法预判所有宝石运动路径,可能性太多了,比如某一个宝石的下落原本只会朝下,但加入了斜下落后会有三种可能,左下,下,右下,20个宝石的下落就会有3的20次方种可能,其产生的可能性会呈指数级别增加,是不可能预测的,也就是用动画队列来实现完全不可能.于是放弃这种

什么是三消游戏

[什么是三消游戏] 三点或多点,以连接相加的形式逆向消除,这就是三消游戏的定义了.三消游戏中最具代表性的游戏莫过于蒙特祖玛的宝藏系列了,该系列作品除了继承传统三消游戏的特点外还加入了益智的环节,让人欲罢不能!而亚特兰蒂斯的召唤系列三消游戏,则完全重新的诠释了三消游戏,在游戏中加入了故事情节.任务等新的元素,让三消游戏老树开新花,更加的耐玩,更有趣味性! 参考:http://www.appifan.com/topic-234