10Shell俄罗斯方块[C++教程网cppcourse].pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Shell俄罗斯方块 第十章 * 本章目标 获取键盘方向按键(read) 棋盘绘制(echo) 俄罗斯方块表示(一维数组) 俄罗斯方块图形输出 进程模型(显式进程,控制进程) 捕捉信号(trap ) 俄罗斯方块源码分析 * 按键获取 向上^[[A 向下^[[B 向左^[[D 向右^[[C ^[为ESC键 * 棋盘绘制 * 边框原点相对于屏幕原点的坐标 左边距marginLeft=8 上边距marginTop=6 棋盘地图相对于屏幕原点的坐标 mapLeft=marginLeft+2 mapTop=marginTop+1 mapWidth=10 mapHeight=15 marginLeft marginTop mapTop mapLeft 棋盘绘制 * DrawBorder() { local i y x1 x2 echo -ne \033[1m\033[32m\033[42m ((x1 = marginLeft + 1)) #左边框x坐标 ((x2 = x1 + 2 + mapWidth * 2)) #右边框x坐标 for ((i = 0; i mapHeight; i++)) do ((y = i + marginTop + 2)) echo -ne \033[${y};${x1}H|| #绘制左边框 echo -ne \033[${y};${x2}H|| #绘制右边框 done ((x1 = marginTop + mapHeight + 2)) for ((i = 0; i mapWidth + 2; i++)) do ((y = i * 2 + marginLeft + 1)) echo -ne \033[${mapTop};${y}H== #绘制上边框 echo -ne \033[${x1};${y}H== #绘制下边框 done echo -ne \033[0m } 俄罗斯方块表示 俄罗斯方块分为七大类,每种类型通过旋转又有自己的不同样式 * box0_0=(0 0 0 1 1 0 1 1 0 4) box1_0=(0 1 1 1 2 1 3 1 0 3) box1_1=(1 0 1 1 1 2 1 3 -1 3) box2_0=(0 0 1 0 1 1 2 1 0 4) box2_1=(0 1 0 2 1 0 1 1 0 3) box3_0=(0 1 1 0 1 1 2 0 0 4) box3_1=(0 0 0 1 1 1 1 2 0 4) 俄罗斯方块表示 * box4_0=(0 2 1 0 1 1 1 2 0 3) box4_1=(0 1 1 1 2 1 2 2 0 3) box4_2=(1 0 1 1 1 2 2 0 -1 3) box4_3=(0 0 0 1 1 1 2 1 0 4) box5_0=(0 0 1 0 1 1 1 2 0 3) box5_1=(0 1 0 2 1 1 2 1 0 3) box5_2=(1 0 1 1 1 2 2 2 -1 3) box5_3=(0 1 1 1 2 0 2 1 0 4) box6_0=(0 1 1 0 1 1 1 2 0 3) box6_1=(0 1 1 1 1 2 2 1 0 3) box6_2=(1 0 1 1 1 2 2 1 -1 3) box6_3=(0 1 1 0 1 1 2 1 0 4) 俄罗斯方块图形输出 * DrawBox() { local i x y xPos yPos yPos=${box0_0[8]} xPos=${box0_0[9]} echo -ne “\033[1m\033[35m\033[45m for ((i = 0; i 8; i += 2)) do (( y = mapTop + 1 + ${box0_0[$i]} + yPos )) (( x = mapLeft + 1 + 2 * (${box0_0[$i + 1]} + xPos) )) echo -ne \033[${y};${x}H[] done echo -ne \033[0m } 进程模型 控制进程(前台进程) 控制进程获得显示进程的进程号用$! 显示进程(后台进程) 控制进程为显示进程的父进程 显示进程要获取控制进程的进程号用$PPID 控制进程退出显示进程要退出 ctrl+c ctrl+\ Q或q键按下的时候控制进程要退出 这里我们借用30号信号来通知显示进程 显示进程退出控制进程也要退出 判断游戏结束的时候,显示进程要退出 这里我们借用30号信号来通知控制进程 * 信号处理 控制进程接收到上下左右键,要通知显示进程进行相应的显示。25、26、27、28号信号来

文档评论(0)

80092355km + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档