签到

05月05日
尚未签到

共有回帖数 0

    心忧不前

    等级:
    这是一系列文章,本来是发在自学去论坛的,感觉对学了c语言语法的朋友应该有所帮助,特意转发到c语言贴吧来,如果大家喜欢,我将继续更新。


    由于是以前写的 素材都是从论坛复制的 有水印 见谅。


    这个系列的教程,首先会跟大家一起制作一个推箱子游戏。


    推箱子游戏是十分简单的一个游戏,我想大家都有玩过,基本规则就是将把箱子全部推到指定的位置,由于我们只用基本的c语言,所以 就用数字或者字符来代替图片。
    制作这个游戏可以分为下面几个知识点:
    1、地图如何表示?
    2、如何用按键去控制游戏中的人去推箱子
    3、如何检测箱子是否可以移动,比如 前面是墙或者其他的箱子时就不能移动?
    4、怎么样才算赢了?
    5、如何保存游戏状态,下次接着玩?


    今天就来解决 第一个疑问,如何显示游戏地图。


    我的大致思路如下,可以用一个二维数组来保存地图信息,因为二位数组 正好跟地图的 x坐标和y坐标对应,都是二维的,操作起来比较直观。


    地图中的围墙,箱子,障碍物等等,可以用数字来表示,比如 1 表示 箱子,2 表示障碍物,3表示箱子应该摆放的位置等等等等。


    由于要表示的物体种类比较少,我们直接用 char类型就够了(int类型也可以,但是是没必要的浪费)。


    比如这样 char map[y][x]; 这样定义一个 y 和 x 都是一个常量,y表示地图的 高, x表示地图的 宽,这个应该很容易理解。就像这张图一样。

    接下来就发用c语言来实现的上面部分。代码中,用 9表示围墙(把0-8 保留来保存其他东西,比如 箱子,障碍物等等,当然你也可以 1或者其他数表示围墙,个人喜好而已),0,表示空地。



    代码如下,有详细注释。(贴吧不适合放代码代码 所以统统贴在 codepad.org上)代码点击查看:http://codepad.org/cElmCh23

    运行效果跟我们想象中的也一样:

    大家可能会说了,这算什么地图,不就几个数字吗?
    好了,接下来我们改动一点东西,用字符来替换数字,让地图看起来更像地图。


    那么,怎么做呢?
    基本思路就是,在输出数组的时候,我们做个判断,当数字是9 的时候,我们不输出9,我们输出一个星号*,表示是墙,当时0的时候呢,我们就输出空格,表示是空地 。


    代码如下:
    http://codepad.org/ciJHojkB


    效果图:



    好了,地图画好了,那么,我们给他加一个箱子如何?


    添加一个箱子,思路也是一样,只是改变数组中的内容,前面说了,我们用1表示箱子,那么我们就来试试吧。


    比如,我想在6,5 这个坐标放一个箱子,那么我们可以直接酱紫,map[5][6]=1; 注意,前面的5 才是y坐标,也就是 行。


    改变好数组了,再在输出的时候加一个判断, 如果是 1 就显示 一个代表箱子的 字符。O(∩_∩)O~ 来看看可爱的代码。


    我们用 回 字来表示箱子吧。


    代码:
    http://codepad.org/iuCScUeq


    效果图如下:

    楼主 2015-08-30 19:52 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知