ShenFei 发表于 2010-6-13 12:52:04

做个坦克大战游戏机和大家分享下

新手,第一次发资料~~~
给大家传一个坦克大战游戏机,用51单片机做的。键盘是用6个按钮排成游戏手柄的形状,左边四个控制自己的坦克移动,右边两个是暂停和射击键。屏幕是4个8*8的红绿双色点阵屏拼成的16*16点阵,游戏开始时敌人有三个红色坦克,在屏幕右上角出现,发的子_弹也是红色;我方坦克绿色,在左下角,子_弹是绿色;墙壁是红绿混合后的颜色,看上去是黄色。敌人那些坦克是随机动的,乱打一通~~呵呵
源程序在这里,不是标准的C语言,不过也很容易移植到Keil上。还有些别的游戏机在我的博客上( myrobot.21ic.org 不好意思去掉空格啊 ),欢迎大家去看。上学来净做游戏机了..
坦克大战游戏源代码ourdev_561623.rar(文件大小:4K) (原文件名:坦克大战.rar)
这是几张照片,颜色照的不是很清楚:
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561624.JPG
(原文件名:坦克大战(屏幕).JPG)
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561625.JPG
(原文件名:坦克游戏模糊全景.JPG)
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561634.JPG
(原文件名:坦克游戏清晰.JPG)

这是背面电路,连线很繁琐,静下心来焊了一天。
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561627.JPG
(原文件名:背面整体.JPG)
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561628.JPG
(原文件名:背面细节.JPG)

wajlh 发表于 2010-6-13 12:55:25

焊功不错

liujun6037 发表于 2010-6-13 13:07:35

很不错哦,一直以来想写这个东西,就和以前任天堂那个一样。但年我和朋友打到晚上三四点还在玩 ,诶。好怀念啊。。。
刚看了下楼主的博客,楼主还会自己写编译器啊?
无敌了,呵呵。

大一的时候,我们系也有这么个牛人,在写编译器。看来楼主也不错啊。
不过编译器最好还是和标准c兼容,否则自己用就行,给别人用一般不敢用的。

zengyi703 发表于 2010-6-13 13:10:17

mark

ShenFei 发表于 2010-6-13 13:11:36

我小时候也是这样, 然后老爸一回家我们就赶紧手忙脚乱的藏游戏机..

dz280339441 发表于 2010-6-13 13:49:35

牛逼

bad_fpga 发表于 2010-6-13 17:34:43

高手,MARK

h2feo4 发表于 2010-6-13 17:40:11

飞线很赞

isme00174 发表于 2010-6-13 17:50:13

虽然上面已经有人说过了,我还是不得不说:飞线很赞

1181zjf 发表于 2010-6-13 17:59:47

同意ls

sky_walker 发表于 2010-6-13 22:37:31

飞线很赞

wandy2010 发表于 2010-6-13 23:30:12

写个能调用任天堂游戏卡的游戏机吧!

lanshuitianxia 发表于 2010-6-13 23:42:00

飞线焊接的不错

huwenhui 发表于 2010-6-14 00:52:20

期待楼主接下来的游戏大作!

ShenFei 发表于 2010-6-14 09:08:54

谢谢大家的支持~~~我还有些游戏机,以后都给大家传上来,给想做游戏机的朋友参考下。不过游戏源码不是标准C语言的,在Keil里编译不了,所以就不上传到这了,需要的话请我的博客下载。myrobot.2 1 i c.org(别忘了去掉空格哦)
贪吃蛇游戏机 --用游戏手柄控制小蛇吃豆。手柄插座是从旧游戏机上拆下的,驱动程序超简单。
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561771.jpg
(原文件名:贪吃蛇.jpg)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561772.JPG
(原文件名:贪吃蛇游戏机.JPG)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561773.JPG
(原文件名:背景.JPG)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561774.JPG
(原文件名:电路.JPG)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561775.JPG
(原文件名:仿真电路.JPG)

chunk 发表于 2010-6-14 09:16:16

弄1米网线,把8根芯掏出来,就是8米单股细铜线,适合洞洞板飞线,只是略硬。AM这里的WIRE-WRAP线比较好使一点。

ShenFei 发表于 2010-6-14 09:22:59

我一般也是用网线连的,铜线容易布线,有点不足就是不太好沾锡。

zheshiwo 发表于 2010-6-14 13:38:42

51单片机上的坦克大战,赞。

AIHHLI 发表于 2010-6-14 14:27:26

看了下LZ的博客,很强。

ShenFei 发表于 2010-6-14 15:08:11

这个是俄罗斯方块游戏,没加显存62C256,直接操作液晶屏像素,电路很简单。
游戏源代码: 点击此处下载 ourdev_561809.rar(文件大小:3K) (原文件名:俄罗斯方块.rar)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561807.JPG
(原文件名:整体.JPG)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561808.JPG
(原文件名:放大.JPG)

zpyws 发表于 2010-6-14 16:51:47

好强大,支持一个

zpyws 发表于 2010-6-14 17:01:20

楼主,请问你的编译器代码有开放吗,如果我想学习自己写编译器,可以推荐几本书吗?
另外提个建议,你的编译器最好语法兼容标准C

ShenFei 发表于 2010-6-14 18:37:39

回复【21楼】zpyws
楼主,请问你的编译器代码有开放吗,如果我想学习自己写编译器,可以推荐几本书吗?
另外提个建议,你的编译器最好语法兼容标准c
-----------------------------------------------------------------------

编译器代码是开源的,就在我博客里可下载。本来是做着玩的,不过写了这么多,就不想放弃了。
其实我也不是很懂编译原理,就是按照自己的理解写的语法解析程序,然后写好多游戏程序测试它。
至于参考书,感觉好些书说的都是一个意思,随便找一本看看就好了,呵呵..
开始是写着玩,按照自己的习惯改了些语法,所以在语法兼容方面不是完全支持标准C,不过大部分还是参考C的语法的,
像控制语句、指针、结构体数组等都跟标准C用法一样的。

cat_li 发表于 2010-6-14 22:24:04

楼主厉害,收藏了

xiaomage_2000 发表于 2010-6-18 15:23:50

楼主太强了!
支持楼主!
建议楼主看看PLC开源,估计你弄PLC的话应该也没问题~~

gddx123 发表于 2010-6-24 11:31:23

猛!

bulaimeimrz 发表于 2010-7-14 21:02:09

厉害,楼主

mcu_lover 发表于 2010-7-14 21:50:10

厉害。

yesjustme1 发表于 2010-7-15 22:48:45

哇,本人极少发话,这次不得不说:BEST!

ggyyll8683 发表于 2010-7-15 23:55:39

nx!!!

yusufu 发表于 2010-7-16 00:06:17

mark一下~~很强大

wbanng 发表于 2010-7-20 14:45:22

背面的飞线很不错

kuwu_007 发表于 2010-7-20 15:50:39

工艺很好!

lyon_beihua 发表于 2010-8-2 17:01:03

DIY的高手呀,佩服!!

staple 发表于 2010-8-2 18:23:47

厉害,想玩俄罗斯方块~~

andrew_dj 发表于 2010-8-3 21:12:27

一直想学一下 编游戏 一直没敢动手

yl604922959 发表于 2010-8-3 22:08:45

smile ....

yl604922959 发表于 2010-8-3 22:09:24

楼主也是廊坊的?那个学校的啊?

caonimab 发表于 2010-8-5 20:09:38

太厉害了!!

wkman 发表于 2010-8-5 21:06:44

回复【19楼】ShenFei 小燕子神飞
-----------------------------------------------------------------------

对你那个“读写手柄”的程序感兴趣,是什么手柄,使用串口类的协议么?能有发出来看看么?

wkman 发表于 2010-8-5 21:11:33

去 楼主 的blog看了下代码,呵,我手上的并口手柄怎么读写的,估计不同。

ding86361953 发表于 2010-8-5 22:31:07

楼主焊工了得!

ShenFei 发表于 2010-8-6 10:40:15

回复【40楼】wkman 鱼片
-----------------------------------------------------------------------

38楼 tear:   我是廊坊师范的, 呵呵

我用的手柄是那种很老的在电视上玩的游戏机手柄(魂斗罗,忍者龟,超级玛丽...), 几块钱一个,应该快淘汰了.
上面有9个引脚,上边5个, 下边4个, 有4个线是起固定作用的, 剩下5根线是电源+,-,CP,D,RST.   那引脚排列哈~~等下我研究研究,
再把引脚图传上来. 和单片机相连的就是那3个线, 时序和CD4017类似, 先给RST复位信号, 再依次通过CP送8个脉冲, 各个按键的
状态就依次在数据线D上输出. 各个键可以同时按, 互不相关. 下面是读键盘程序, 返回当前键值, 不是标准C语言有些稀奇古怪的语法, 反正大体意思大家一看就懂,很容易改到Keil上的.


//游戏手柄元件,返回当前按键值, 为1表示对应键按下.
//这个是库函数的代码,所以三个控制引脚定位到一个中间元件上
unit game_pad
{
    //初始化
    public void init()
    {
      d = high;
      cp = low;
      reset = high;
    }
    //读取键盘按键
    public uint8 read()
    {
      uint8 key_data;
      reset = high;
      loop( 8 ) {
            key_data <<= 1;
            key_data.0 = d;
            reset = low;
            cp = high;
            cp = low;
      }
      return key_data;
    }
    //键盘枚举值, 用相与判零的方式检测按下
    public const uint8 right = 0b0000_0001;
    public const uint8 left = 0b0000_0010;
    public const uint8 down = 0b0000_0100;
    public const uint8 up = 0b0000_1000;
    public const uint8 start = 0b0001_0000;
    public const uint8 select = 0b0010_0000;
    public const uint8 a = 0b0100_0000;
    public const uint8 b = 0b1000_0000;
    //手柄信号线定义
    bit cp = @game_pad_port.cp;
    bit d = @game_pad_port.d;
    bit reset = @game_pad_port.reset;
}
//接口,这个元件类型是由用户定义的,根据具体的硬件连接设置端口
unit game_pad_port
{
    bit cp = @sfr.P1.0;
    bit d = @sfr.P1.1;
    bit reset = @sfr.P1.2;
}
   原来制表符显示不了啊..

ShenFei 发表于 2010-8-6 11:24:31

手柄引脚图:   
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_573210.JPG
(原文件名:手柄插头.JPG)


这图做的,...    太难看了

wsxqazx 发表于 2010-8-11 22:04:24

mark !mark !

liujun6037 发表于 2010-8-12 01:11:19

楼主,手柄的公座在哪里买的?多少钱一个?叫什么名字?我怎么在淘宝搜索不到...

ShenFei 发表于 2010-8-12 14:04:12

回复【46楼】liujun6037
楼主,手柄的公座在哪里买的?多少钱一个?叫什么名字?我怎么在淘宝搜索不到...
-----------------------------------------------------------------------

没办法,从旧游戏机上拆吧..如果实在没有, 就用电脑串口的插座代替,它们尺寸好像差不多.

yubo2007 发表于 2010-8-12 14:34:08

楼主的焊工了得!!!!赞一个!!!

jeffernpeng 发表于 2010-8-17 15:11:40

飞线很酷

woshigeshuai 发表于 2010-8-17 19:15:56

超好玩...突然感觉自己水平不是一般的低.

kenson 发表于 2010-8-17 19:33:55

it look amazing !!

liuwenang 发表于 2010-8-17 20:58:34

太强大了!佩服楼主!

lpgyf 发表于 2010-8-20 14:12:19

mark

lzm8871043 发表于 2010-8-20 17:01:20

一堆强人

uncle_Sam 发表于 2011-2-26 16:09:30

回复【楼主位】ShenFei 小燕子神飞
-----------------------------------------------------------------------

楼主同志,恕我冒昧,您真的是女同志吗?

a312835782 发表于 2012-3-9 15:03:53

mark

xuanke 发表于 2012-3-9 15:30:45

mark mark!!!!楼主极其强大。。

zzz1367 发表于 2012-3-9 17:10:46

mark,LZ超强

jiaohaitao 发表于 2012-3-10 17:06:48

厉害。。。。。。。。。。
页: [1]
查看完整版本: 做个坦克大战游戏机和大家分享下