昨晚刷手机看人玩海战游戏,突然手痒想整个简单的。说干就干,从书房翻出我那台旧笔记本,打开那个绿色图标的代码编辑器就开始瞎捣鼓。
第一步:纸上乱涂乱画
没敢直接写代码,先在废打印纸背面画方格。画了俩10×10的大方框,左边标上“我的破船”,右边写上“电脑的船”。琢磨着得给船编个号?于是歪歪扭扭记了:大号船占4格、中号船占3格、小号船占2格,还有个1格的小舢板。
突然意识到个蠢问题——这船总不能在格子里竖着放横着放?赶紧用红笔画了几个歪箭头,嘴里还嘟囔:“要是竖着放,横坐标不动只动纵坐标;横着放就反着来...”结果咖啡洒了半张纸,草稿直接变抽象艺术。
第二步:键盘噼里啪
新建个空白文档就开始莽: 先整两个大海
- 吭哧吭哧敲出二维数组,10×10全填上“~”波浪线
- 管自己海域叫playerSea,电脑的叫botSea,起名废实锤
- 翻出草稿本看尺寸,把船写成字典{“大船”:4条杠}这种
- 写摆船函数时卡壳一小时——怎么防止船撞车?!粗暴解决:强行把重叠的船都弹开,弹不开就重摆
- 给电脑自动摆船时偷懒,直接写死随机数,结果生成出个战舰连连看
- 玩家输入坐标时手抖写错字母?直接写个循环骂他:“瞎打什么!重新输!”
- 炮弹打重复位置就显示“炸过鱼了别浪费”
- 中弹就在海里标“X”,打偏就画“⚐”小旗子
第三步:被自己蠢哭的测试
第一次按F5运行,命令行黑窗口刚弹出来就闪退了!瞪着屏幕懵了两分钟才想起来:忘写循环!打一炮程序就跑了,赶紧补个while True圈住。
第二次试玩更惨
- 自己战舰全显示在海上,这不裸奔吗?!赶紧把playerSea里的船改成默认隐身
- 打沉电脑船后它还在还击,查代码发现少写沉船状态判断
- 最绝的是用坐标(3,5)打船,结果判断成(35,0)???字符串切分写反了下标,当场吐血
最终效果和翻车现场
折腾到凌晨两点终于能玩了:
- 屏幕显示跟老式DOS游戏似的,全是字符画
- 玩家海域显示自己打过的炮,电脑海域显示它打我的位置
- 每次开炮都刷新屏幕,清屏闪得眼瞎
刚想得意,结果发现自己摆的船被电脑三炮团灭。盯着代码查半天——原来藏舰函数没生效,所有船都挤在左上角扎堆! 气得把随机数种子调了八百遍。
关电脑前加了行大字:“你战舰全沉了!败家玩意儿!” 算是泄愤。看着满屏的波浪号和X字符,突然觉得小时候玩文曲星推箱子的快乐回来了。
下次试试把海换成火星战场?但估计还是会被电脑锤爆......
还没有评论,来说两句吧...