﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-EXIST &amp; ALIVE-文章分类-程序设计</title><link>http://www.cnitblog.com/Redsign/category/7357.html</link><description>海到无边天作岸，山登绝顶我为峰</description><language>zh-cn</language><lastBuildDate>Mon, 03 Oct 2011 07:43:58 GMT</lastBuildDate><pubDate>Mon, 03 Oct 2011 07:43:58 GMT</pubDate><ttl>60</ttl><item><title>API+VC++6.0的小游戏：超级玛莉2——复仇者</title><link>http://www.cnitblog.com/Redsign/articles/51384.html</link><dc:creator>EXIST</dc:creator><author>EXIST</author><pubDate>Wed, 12 Nov 2008 11:20:00 GMT</pubDate><guid>http://www.cnitblog.com/Redsign/articles/51384.html</guid><wfw:comment>http://www.cnitblog.com/Redsign/comments/51384.html</wfw:comment><comments>http://www.cnitblog.com/Redsign/articles/51384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/Redsign/comments/commentRss/51384.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Redsign/services/trackbacks/51384.html</trackback:ping><description><![CDATA[

<img border="0" align="absmiddle" src="http://www.cnitblog.com/images/cnitblog_com/redsign/mariogame.jpg">

<div>这次没有用MFC，感觉编起来很累。。。不过对API有了更好的理解。</div><div>游戏编了1个礼拜，素材的搜集和导入花了不少时间。</div><div>游戏中可能还有一个显示上的bug，不过不影响游戏。</div><div>故事情节：超级玛莉遇到麻烦了，怪物们为了复仇都来疯狂地攻击他的城堡...眼看城堡就要垮了......</div><div>游戏说明：每关可以购买、配置武器。游戏共有12关，最后一关会有bt的新型怪物出现哦！</div><div>文件较大（6M有背景音乐），所以不能上传，下载地址：<span style="font-family: 'Courier New'; font-size: 11px; white-space: pre; ">http://www.namipan.com/d/ee305540eb1151ddd289db6ec325d259b3581cb6ae416b00</span></div><img src ="http://www.cnitblog.com/Redsign/aggbug/51384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Redsign/" target="_blank">EXIST</a> 2008-11-12 19:20 <a href="http://www.cnitblog.com/Redsign/articles/51384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>暑假VC小游戏《魔塔》</title><link>http://www.cnitblog.com/Redsign/articles/46413.html</link><dc:creator>EXIST</dc:creator><author>EXIST</author><pubDate>Mon, 07 Jul 2008 13:28:00 GMT</pubDate><guid>http://www.cnitblog.com/Redsign/articles/46413.html</guid><wfw:comment>http://www.cnitblog.com/Redsign/comments/46413.html</wfw:comment><comments>http://www.cnitblog.com/Redsign/articles/46413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/Redsign/comments/commentRss/46413.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Redsign/services/trackbacks/46413.html</trackback:ping><description><![CDATA[
<p><img height="373" alt="" src="http://www.cnitblog.com/images/cnitblog_com/redsign/mota.jpg" width="518" border="0"><br><br>——其实不应该叫暑假小游戏，因为第三学期考试前就开始弄了，断断续续，弄了很久。（此乃大忌也）<br><br>开发工具：VC++6.0<br><br>使用平台：windows 2000，xp，vista<br><br>开发周期：不详<br><br>配置要求：内存>10M,硬盘>5M&#160; &#160;- -；<br></p>
<p>这次比较满意的是做了一个地图编辑器，方便我导入数据。<br><br>程序用了静态编译，省得导入dll，缺点么也是不言而喻了。<br><br>本来以为编剧情比编程序容易，其实不然。剧情下了很大功夫。<br>虽然游戏只有20关，但要pass也是不容易的哦~~<br><br>另外，发现指针真不是好惹的东西。一个指针问题让我徘徊了好久~还好有static机制帮忙...但是这又引来了另一个麻烦...<br><br><br>不管了，反正噼里啪啦60k 的代码敲下来了...<br>有什么bug麻烦请指出吧！！<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;魔塔源程序&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <a href="http://www.cnitblog.com/Files/Redsign/4.rar">/Files/Redsign/4.rar<br></a>&#160;&#160;&#160;&#160;&#160;魔塔地图编辑器&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="http://www.cnitblog.com/Files/Redsign/5.rar">/Files/Redsign/5.rar</a><br></p><img src ="http://www.cnitblog.com/Redsign/aggbug/46413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Redsign/" target="_blank">EXIST</a> 2008-07-07 21:28 <a href="http://www.cnitblog.com/Redsign/articles/46413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>假期VB小游戏《魔板》</title><link>http://www.cnitblog.com/Redsign/articles/45922.html</link><dc:creator>EXIST</dc:creator><author>EXIST</author><pubDate>Sat, 21 Jun 2008 17:03:00 GMT</pubDate><guid>http://www.cnitblog.com/Redsign/articles/45922.html</guid><wfw:comment>http://www.cnitblog.com/Redsign/comments/45922.html</wfw:comment><comments>http://www.cnitblog.com/Redsign/articles/45922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/Redsign/comments/commentRss/45922.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Redsign/services/trackbacks/45922.html</trackback:ping><description><![CDATA[<p><img height=364 alt="" src="http://www.cnitblog.com/images/cnitblog_com/redsign/about.JPG" width=496 border=0><br>首先申明，这不是试验报告，只是自己的一点小感想而已。没有研究过该游戏的人可能是看不懂的。</p>
<p>开发工具：VB6.0</p>
<p>辅助工具：PS，音频制作工具</p>
<p>开发周期：2天半</p>
<p>开发过程：算法思想形成——&gt;试验——&gt;失败——&gt;改进算法——&gt;成功——&gt;搜集素材+图形界面绘制——&gt;测试+打包</p>
<p>体会：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是自己做的第二个小游戏（第一个是用VC6.0做的一个RPG），游戏本身比第一个小很多，以至于都不用计划流程。新鲜感已经没有什么了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我感觉这个小游戏给我最大的体会就是算法问题。从我的制作过程可以看到，一开始我的算法是失败的，用了深度搜索，稍微分析一下就会发现，这样完全不适合题目的情况。 于是想到广搜。但由于魔板变化的状态数是8！约4万多，所以怎么说都要执行4万多次循环，如果每次玩家要得到解答都要计算机执行4n万次（每一次执行当中都又很多运算），那这个游戏还让不让人玩了？！于是想到在游戏中建立一个现成的大小为8！byte的状态记录表，里面记录的是其上一次状态到现在状态的变换所需的操作。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是这个游戏只占内存40k左右，而一开始你看到开始画面（闪电~）的时候，计算机正在执行4N万的运算（每次循环包括3种操作的尝试，这些操作会用到不少循环，个人感觉用位移指令效率会高一点，但又不适合我用的数组），所谓一劳永逸，之后，所以的状态都存到我建立的hash表里了！~</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有一点需要说明的是，原来状态里最大的是87654321，偷懒的话可以建立一个87654321byte的数组，占用8M多的内存。而我是用了一点小技巧，把01234567对应到数组的0，76543210对应到数组的8！-1，这样只需40k内存，节省了空间了吧！~不过这样的对应函数自然要话时间咯。所谓时间空间不可兼得。不过考虑到一劳永逸原则，加上开始画面的障眼法，还是取空间了，帮玩家节约点内存~^_^~~&nbsp; 这里我把这个hash函数贴一贴吧：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img id=Codehighlighter1_7_441_Open_Image onclick="this.style.display='none'; Codehighlighter1_7_441_Open_Text.style.display='none'; Codehighlighter1_7_441_Closed_Image.style.display='inline'; Codehighlighter1_7_441_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_7_441_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_7_441_Closed_Text.style.display='none'; Codehighlighter1_7_441_Open_Image.style.display='inline'; Codehighlighter1_7_441_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">Public</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_7_441_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">Function&nbsp;HashFun()</span><span id=Codehighlighter1_7_441_Open_Text><span style="COLOR: #0000ff">Function</span><span style="COLOR: #000000">&nbsp;HashFun(arr1()&nbsp;</span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">Byte</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">Long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">哈希函数，比如把01234567转成0，76543210转成40319</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #008000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">Dim</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">Byte</span><span style="COLOR: #000000">,&nbsp;k&nbsp;</span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">Byte</span><span style="COLOR: #000000">,&nbsp;resort&nbsp;</span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">Long</span><span style="COLOR: #000000">,&nbsp;less&nbsp;</span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">Byte</span><span style="COLOR: #000000">,&nbsp;queue(</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">Byte</span><span style="COLOR: #000000">,&nbsp;l&nbsp;</span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">Long</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>queue(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">&nbsp;初始化，使其大于任何一个数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #008000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">For</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">To</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">******找出比当前数组元素小的元素个数{</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #008000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">For</span><span style="COLOR: #000000">&nbsp;k&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">To</span><span style="COLOR: #000000">&nbsp;j<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000">&nbsp;queue(k&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;arr1(j)&nbsp;</span><span style="COLOR: #0000ff">Then</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>less&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;less&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">Next</span><span style="COLOR: #000000">&nbsp;k<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>queue(j)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;arr1(j)&nbsp;</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">入队列</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">l&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Factorial(</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;j)<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>resort&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;resort&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;(arr1(j)&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;less)&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;l<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>less&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">Next</span><span style="COLOR: #000000">&nbsp;j<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>HashFun&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;resort<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #0000ff">End&nbsp;Function</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后再谈谈对VB的感受。高中是学过的，那时候也编过游戏，但是没有想到将来会搞计算机，也就瞎弄弄，后来完全忘了。现在又用VB，完全是新的体验。VB给我最大的印象就是通俗易懂，拿来就用。书也不用翻（当然ppt是看的- -），API查查，再加对象浏览器，就ok了~比起VC，可视化程度高，所见即所得。感觉一般的小程序（如老师说的），小游戏，小项目用VB是完全可以搞定的，不过底层一点的么，呵呵，就不行了~</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说了这么多废话，还是把游戏给大家吧~源代码就不送了，给你也看不懂，程序可读性不怎么样~</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载注意：游戏下载大小限制，下载分成3个部分，下载完最后把setup.exe,setup.lst,魔板1.CAB~魔板4.CAB置于同一文件夹方可安装~<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有朋友说不能安装，如果有这样的情况，请向我反映！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.cnitblog.com/Files/Redsign/3.rar">/Files/Redsign/3.rar<br></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.cnitblog.com/Files/Redsign/2.rar">/Files/Redsign/2.rar<br></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.cnitblog.com/Files/Redsign/1.rar">/Files/Redsign/1.rar<br></a>&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: red">更新过了，可以永久存档（highscore）了。</span></p>
<img src ="http://www.cnitblog.com/Redsign/aggbug/45922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Redsign/" target="_blank">EXIST</a> 2008-06-22 01:03 <a href="http://www.cnitblog.com/Redsign/articles/45922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>