gamemaker吧 关注:13,658贴子:95,286
  • 3回复贴,共1

【知识分享】三消游戏的设计思路。

只看楼主收藏回复

本人学习GM有一年了,承蒙各位教会。但是有位同学希望得到本人的渣作三消的源码,我个人觉得源码过于混乱,不适合新手学习,所以单独开了一个帖子,将最核心的部分分享给大家,希望高手可以指点,新手可以得到启发。同时配备了一些个人的注释。


IP属地:辽宁1楼2015-11-23 08:50回复
    首先大家要去了解一下三消是什么东西,可以玩玩宝石迷阵了解一下规则。
    第一步:首先是开局的建立,这个说来简单,也不太容易,就是保证别一开始创建的时候就有一堆应该消除的宝石。
    组合排列大家一定都学过,没错,开局建立的时候要让整体遍历一下整张地图,看看这样随机创建会不会造成应该消除的现象存在。
    就遍历来说,就是一个鉴定的建立,首先你要思考,怎样的情况下在这个点创造才不会存在消除的可能。譬如蓝+蓝+空,这个空就一定不会再被创建为蓝了,以此类推会有两种状况,一种是横可消,一种是竖着可消,所以判断起来不是很难,至于机制希望大家能够自己思考,从建立地图开始,而不是一上来就搞个怎么消除之类的。
    我分享一下自己的建立机制,给大家参考一下:
    for(i=60;i<=540;i+=60){
    for(j=60;j<=540;j+=60){
    A[i,j]=instance_create(i,j,oh)
    A[i,j].kz=instance_create(i,j,object7);
    if(i<=120){
    if(j>120){if(A[i,j-120].kz.image_index=A[i,j-60].kz.image_index){do{A[i,j].kz.image_index=choose(0,1,2,3)}until(A[i,j].kz.image_index!=A[i,j-60].kz.image_index)}}
    }
    else{
    if(j<=120){if(A[i-120,j].kz.image_index=A[i-60,j].kz.image_index){
    do{A[i,j].kz.image_index=choose(0,1,2,3)}until(A[i,j].kz.image_index!=A[i-60,j].kz.image_index)}}
    else{if(A[i-120,j].kz.image_index=A[i-60,j].kz.image_index||A[i,j-120].kz.image_index=A[i,j-60].kz.image_index)
    do{A[i,j].kz.image_index=choose(0,1,2,3)}
    until(A[i,j].kz.image_index!=A[i-60,j].kz.image_index&&A[i,j].kz.image_index!=A[i,j-60].kz.image_index)
    }
    }
    }
    }
    我是通过背景来控制宝石的,kz(控制的意思)object7就是宝石物体,而image_index代表着宝石的颜色。这样创建可以避免一开始创建的时候存在大量应消除。通过二层嵌套创建9*9个宝石。这是只有四种颜色的情况.


    IP属地:辽宁2楼2015-11-23 09:02
    回复
      2025-05-19 07:08:19
      广告
      我的讲解大概如此,可能写的过于匆忙,希望能给大家一点启发吧,希望高手能够不吝赐教,新手能多提问题。


      IP属地:辽宁4楼2015-11-23 09:22
      回复
        多少年前写过一个对对碰,一直没有一个完美版的。


        IP属地:河南来自Android客户端5楼2015-11-24 06:29
        回复