zoukankan      html  css  js  c++  java
  • shell版俄罗斯方块二:程序流程 分类: shell版俄罗斯方块 2015-07-28 19:04 56人阅读 评论(0) 收藏

    一、方块的表示

         由于shell不能定义二维数组,所以只能用一维数组表示方块,俄罗斯方块主要可以分为7类,每一类方块都是由四类小方块构成,表示方法如下。

            Box=(x1,y1,x2,y2,x3,y3,x4,y4,x,y)

         xi、yi是各个小方块在俄罗斯方块表示区域中的坐标,最后的两个,x、y是在方块出现时,该表示区域相对于棋盘的坐标,7类方块的表示如下:

        


    二、相关函数定义

    1、两个主要函数

    RunAsDisplayer()、RunAsKeyReceiver(),这两个函数当中各有一个死循环,并且这两个函数运行在不同的进程当中,所以这两个函数在游戏期间始终在运行,其中,显示进程作为后台进程,命令接收进程作为前台进程。前台进程在接收到命令后,由kill指令将命令发送给显示进程,显示进程执行相关操作。前台进程发送给显示进程的主要命令有:翻转、左移、右移、下移、直接下落到底、退出。当前台进程收到退出指令后,关闭自己之前,会先关闭显示进程,同样,显示进程关闭之前,也会关闭命令接收进程。

    2、创建方块函数

    CreateBox()   #创建方块,如果是第一次创建则随机生成,否则读取预生成的方块

    PrepareNextBox()  #生成下一个方块,并预显示

    3、绘制函数

    DrawBorder()    #绘制边框及成绩等

    DrawCurBox()    #绘制当前方块

    4、指令处理函数

    BoxRotate()   #接收上方向键,用于旋转方块

    BoxRight()    #右移

    BoxLeft()     #左移

    BoxDown()   #下移,下移时要判断,如果到底了,要写入背景,并创建新方块

    BoxAllDown() #直接下移到最底部

    5、移动可行性判断函数

    BoxMove()   #该函数包含两个表示目的地址的参数,如果可以移动,则返回0,否则返回1

    6、写入背景函数

    Box2Map()   #该函数用于把到底的方块写入到背景当中,并消去可以消去的行

    7、退出函数

    MyExitNoSub()    #用于恢复终端并退出指令接收进程

    MyExit()   #关闭两个进程,调用其他两个退出函数实现

    ShowExit()  #关闭显示进程

    三、系统流程


  • 相关阅读:
    smary里Js正则表达式不正常
    php7下对微信支付退款申请通知的解密处理
    apache下设置deflate/gzip
    从大表里随机取若干行的效率问题
    Ecshop、Discuz! 等开源产品的局限
    mysql实现ORACLE的connect by prior父子递归查询
    SQL计算字符串里的子字符串出现个数
    UCENTER同步登录工作原理和配置要点
    云服务器:西部数码VS阿里云
    用ftp命令实现主机文件批量更新
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687028.html
Copyright © 2011-2022 走看看