免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7045 | 回复: 26
打印 上一主题 下一主题

一个扫雷小游戏(高手请指教) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-25 10:52 |只看该作者 |倒序浏览
刚写完的一个扫雷小游戏,编程思路很烂,但总算能玩。
历时6小时+1.5小时。
最开始是画了一个初始化的图,花了我6个小时才画完,发表于2008-7-20《类似于扫雷初始化的9X9的图》http://bbs.chinaunix.net/thread-1218190-1-1.html
后来食物中毒,一病不起,反而有了心思静下来想想思路。
等病好了用了1个半小时就写完了剩下的三分之二o(∩_∩)o...
不求完美,但求是这样一个小东西,能玩就行,于是草草收场。

玩法:
左:h
右:l
上:k
下:j
扫雷:a

放代码:

  1. #!/bin/bash

  2. x2=81
  3. #A=()
  4. #################################################################################
  5. now_i=0
  6. x=0
  7. y=0
  8. sum_lei=0
  9. sum_dianji=0
  10. ################################################


  11. print_lei()  {
  12. clear
  13. for((i=0;i<x2;i++))
  14. do
  15.         if [ $((i%9)) -eq 0 ] && [ $i -ne 0 ];then
  16.                 echo
  17.         fi
  18.         if [ ${A[$i]} -ge 10 ];then
  19.                 echo -n "# "
  20.         else
  21.                 echo -n "${A[$i]} "
  22.         fi
  23. done
  24. echo
  25. }



  26. for((i=0;i<x2;i++))
  27. do
  28.         A[$i]=$(($RANDOM%10))
  29. done


  30. for((i=0;i<x2;i++))
  31. do
  32.         if [ ${A[$i]} -eq 9 ];then
  33.                 continue
  34.         fi
  35.         lei_num=0
  36.         for var in -10 -9 -8 -1 1 8 9 10
  37.         do
  38.                 if [ $((i+var)) -lt 0 ] || [ $((i+var)) -gt 80 ];then
  39.                         continue
  40.                 fi
  41.                 if [ $((i%9)) -eq 0 ];then
  42.                         case $var in
  43.                                 -10|-1|8)
  44.                                         continue;;
  45.                         esac
  46.                 fi
  47.                 if [ $((i%9)) -eq 8 ];then
  48.                         case $var in
  49.                                 -8|1|10)
  50.                                         continue;;
  51.                         esac
  52.                 fi
  53.                 if [ ${A[$((i+var))]} -eq 9 ];then
  54.                         ((lei_num++))
  55.                 fi
  56.         done
  57.         A[$i]=$lei_num
  58. done

  59. for((i=0;i<x2;i++))
  60. do
  61.         if [ ${A[$i]} -eq 9 ];then
  62.                 ((sum_lei++))
  63.         fi
  64.         ((A[$i]+=10))
  65. done


  66. print_lei




  67. #####################################################################

  68. tput cup $x $y
  69. stop_out() {
  70.         if [ $x -eq -1 ];then
  71.                 x=8
  72.                 ((now_i+=81))
  73.         elif [ $x -eq 9 ];then
  74.                 x=0
  75.                 ((now_i-=81))
  76.         elif [ $y -eq -2 ];then
  77.                 y=16
  78.                 ((now_i+=9))
  79.         elif [ $y -eq 18 ];then
  80.                 y=0
  81.                 ((now_i-=9))
  82.         fi
  83. }
  84. leftmove() {
  85.         ((y-=2))
  86.         ((now_i--))
  87.         stop_out
  88.         print_lei
  89.         tput cup $x $y
  90. }
  91. rightmove() {
  92.         ((y+=2))
  93.         ((now_i++))
  94.         stop_out
  95.         print_lei
  96.         tput cup $x $y
  97. }
  98. upmove() {
  99.         ((x--))
  100.         ((now_i-=9))
  101.         stop_out
  102.         print_lei
  103.         tput cup $x $y
  104. }
  105. downmove() {
  106.         ((x++))
  107.         ((now_i+=9))
  108.         stop_out
  109.         print_lei
  110.         tput cup $x $y
  111. }
  112. dianji() {
  113.         if [ ${A[$now_i]} -eq 19 ];then
  114.                 print_lei
  115.                 echo "You failure"
  116.                 exit 0
  117.         elif [ ${A[$now_i]} -ge 10 ];then
  118.                 ((A[$now_i]-=10))
  119.                 ((sum_dianji++))
  120.         fi
  121. }
  122. success() {
  123.         ((sum=sum_lei+sum_dianji))
  124.         if [ $sum -eq 81 ];then
  125.                 print_lei
  126.                 echo "You win!"
  127.                 exit 0
  128.         fi
  129. }
  130. while [ 0 ]
  131. do
  132.         read -s -n1 fx
  133.         case $fx in
  134.         h)
  135.         leftmove;;
  136.         l)
  137.         rightmove;;
  138.         j)
  139.         downmove;;
  140.         k)
  141.         upmove;;
  142.         a)
  143.         dianji;;
  144.         esac
  145. success
  146. done

复制代码

评分

参与人数 2可用积分 +10 收起 理由
walkerxk + 5 原创内容
寂寞烈火 + 5 我很赞同

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2008-07-25 11:05 |只看该作者
玩了一下,不错哦

论坛徽章:
0
3 [报告]
发表于 2008-07-25 11:07 |只看该作者
还不错,lz功力好

shell原创以前也有,可以参照这里的完美它
http://bbs.chinaunix.net/viewthread.php?tid=634271

论坛徽章:
0
4 [报告]
发表于 2008-07-25 11:18 |只看该作者
原帖由 无声无息 于 2008-7-25 11:07 发表
还不错,lz功力好

shell原创以前也有,可以参照这里的完美它
http://bbs.chinaunix.net/viewthread.php?tid=634271



呵呵。之所以想到写这个就是因为以前见到过。
没有看他老人家的源代码,
因为读代码比写代码要难。

论坛徽章:
0
5 [报告]
发表于 2008-07-25 11:19 |只看该作者

回复 #2 net_robber 的帖子

谢谢。没什么功能。瞎折腾

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2008-07-25 11:27 |只看该作者
支持原创~~~~加分鼓励!

论坛徽章:
0
7 [报告]
发表于 2008-07-25 11:29 |只看该作者
原帖由 寂寞烈火 于 2008-7-25 11:27 发表
支持原创~~~~加分鼓励!


烈火大人,我爱你
第一次收到分哇。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 2008-07-25 11:30 |只看该作者
算不错了。

论坛徽章:
0
9 [报告]
发表于 2008-07-25 11:48 |只看该作者
来支持一下;
弄成彩色的更好玩。

论坛徽章:
0
10 [报告]
发表于 2008-07-25 12:06 |只看该作者
eeeef  请教个问题
read -s 参数
-s 把输入作为一个命令保存在 Korn shell 的历史记录文件中
上面解释我不是很理解,你的程序中也用到了“ read -s -n1 fx”
能解释一下吗?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP