做个坦克大战游戏机和大家分享下
新手,第一次发资料~~~给大家传一个坦克大战游戏机,用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) 焊功不错 很不错哦,一直以来想写这个东西,就和以前任天堂那个一样。但年我和朋友打到晚上三四点还在玩 ,诶。好怀念啊。。。
刚看了下楼主的博客,楼主还会自己写编译器啊?
无敌了,呵呵。
大一的时候,我们系也有这么个牛人,在写编译器。看来楼主也不错啊。
不过编译器最好还是和标准c兼容,否则自己用就行,给别人用一般不敢用的。 mark 我小时候也是这样, 然后老爸一回家我们就赶紧手忙脚乱的藏游戏机.. 牛逼 高手,MARK 飞线很赞 虽然上面已经有人说过了,我还是不得不说:飞线很赞 同意ls 飞线很赞 写个能调用任天堂游戏卡的游戏机吧! 飞线焊接的不错 期待楼主接下来的游戏大作! 谢谢大家的支持~~~我还有些游戏机,以后都给大家传上来,给想做游戏机的朋友参考下。不过游戏源码不是标准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) 弄1米网线,把8根芯掏出来,就是8米单股细铜线,适合洞洞板飞线,只是略硬。AM这里的WIRE-WRAP线比较好使一点。 我一般也是用网线连的,铜线容易布线,有点不足就是不太好沾锡。 51单片机上的坦克大战,赞。 看了下LZ的博客,很强。 这个是俄罗斯方块游戏,没加显存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) 好强大,支持一个 楼主,请问你的编译器代码有开放吗,如果我想学习自己写编译器,可以推荐几本书吗?
另外提个建议,你的编译器最好语法兼容标准C 回复【21楼】zpyws
楼主,请问你的编译器代码有开放吗,如果我想学习自己写编译器,可以推荐几本书吗?
另外提个建议,你的编译器最好语法兼容标准c
-----------------------------------------------------------------------
编译器代码是开源的,就在我博客里可下载。本来是做着玩的,不过写了这么多,就不想放弃了。
其实我也不是很懂编译原理,就是按照自己的理解写的语法解析程序,然后写好多游戏程序测试它。
至于参考书,感觉好些书说的都是一个意思,随便找一本看看就好了,呵呵..
开始是写着玩,按照自己的习惯改了些语法,所以在语法兼容方面不是完全支持标准C,不过大部分还是参考C的语法的,
像控制语句、指针、结构体数组等都跟标准C用法一样的。 楼主厉害,收藏了 楼主太强了!
支持楼主!
建议楼主看看PLC开源,估计你弄PLC的话应该也没问题~~ 猛! 厉害,楼主 厉害。 哇,本人极少发话,这次不得不说:BEST! nx!!! mark一下~~很强大 背面的飞线很不错 工艺很好! DIY的高手呀,佩服!! 厉害,想玩俄罗斯方块~~ 一直想学一下 编游戏 一直没敢动手 smile .... 楼主也是廊坊的?那个学校的啊? 太厉害了!! 回复【19楼】ShenFei 小燕子神飞
-----------------------------------------------------------------------
对你那个“读写手柄”的程序感兴趣,是什么手柄,使用串口类的协议么?能有发出来看看么? 去 楼主 的blog看了下代码,呵,我手上的并口手柄怎么读写的,估计不同。 楼主焊工了得! 回复【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;
}
原来制表符显示不了啊.. 手柄引脚图:
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_573210.JPG
(原文件名:手柄插头.JPG)
这图做的,... 太难看了 mark !mark ! 楼主,手柄的公座在哪里买的?多少钱一个?叫什么名字?我怎么在淘宝搜索不到... 回复【46楼】liujun6037
楼主,手柄的公座在哪里买的?多少钱一个?叫什么名字?我怎么在淘宝搜索不到...
-----------------------------------------------------------------------
没办法,从旧游戏机上拆吧..如果实在没有, 就用电脑串口的插座代替,它们尺寸好像差不多. 楼主的焊工了得!!!!赞一个!!! 飞线很酷 超好玩...突然感觉自己水平不是一般的低. it look amazing !! 太强大了!佩服楼主! mark 一堆强人 回复【楼主位】ShenFei 小燕子神飞
-----------------------------------------------------------------------
楼主同志,恕我冒昧,您真的是女同志吗? mark mark mark!!!!楼主极其强大。。 mark,LZ超强 厉害。。。。。。。。。。
页:
[1]