主题:[讨论]我正在写(准确地说是改写……)一个贪食蛇游戏,遇到了这么一件怪事。
xzcyr
[专家分:0] 发布于 2008-09-21 00:21:00
正版的源程序和我的修改都在压缩包里,当然我的修改版已经是乱七八糟了。这里简要说一下最严重的问题。正版的源程序是使用代码绘制界面的:'调整大小与位置
Pic.Left = 20
Pic.Top = 20
Pic.Width = GRID * GRID_NUM + 6
Pic.Height = GRID * GRID_NUM + 6
Me.Width = (Pic.Left + Pic.Width + 20) * (Screen.TwipsPerPixelX)
Me.Height = (Pic.Top + Pic.Height + 20 + 40) * (Screen.TwipsPerPixelY)
'绘制格线
linHor(1).X1 = 0
linHor(1).X2 = GRID * GRID_NUM
linHor(1).Y1 = 0
linHor(1).Y2 = 0
linVer(1).X1 = 0
linVer(1).X2 = 0
linVer(1).Y1 = 0
linVer(1).Y2 = GRID * GRID_NUM
For i = 2 To 21
Load linHor(i)
linHor(i).Y1 = (i - 1) * GRID
linHor(i).Y2 = (i - 1) * GRID
Load linVer(i)
linVer(i).X1 = (i - 1) * GRID
linVer(i).X2 = (i - 1) * GRID
linHor(i).Visible = True
linVer(i).Visible = True
Next
我就尝试着手工来画那个界面,结果,明明设置的属性值和代码赋的值是相同的,可蛇和格子就是对不齐,我研究了半天,觉得可能是SCALEMODE属性的问题,做了些设置之后还是不顶事。现在大家看到的这个,又不知是出了什么问题,那条蛇……唉,这不是重点。(估计是我改的时候又不小心碰了什么。)还有比较奇怪的一点是,我在设置LEFT,TOP,WIDTH,HEIGHT时,有时焦点一移开,属性值就会变,比如设的是20,回头就变成了19.033……总之我有点晕了,上次编TXT分割器拖出了个文件编码方式的问题,这次又不知被我撞到什么了……
最后更新于:2008-09-21 00:23:00
回复列表 (共9个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-09-21 02:20:00
LEFT,TOP,WIDTH,HEIGHT属性值如果不是正像素(不论使用什么单位),都会自动取整的。
其他的,你没有说清。
板凳
guoyong_cy [专家分:3050] 发布于 2008-09-21 09:16:00
看了你的 代码,你那个pic(picturebox)的scalmode怎么设置成0了,应该是3,改了后基本正常了,好像line对的还不是很齐。
这种小游戏,作为练习的话,可以自己设计代码来写,何必去改别人的呢?!
3 楼
xzcyr [专家分:0] 发布于 2008-09-21 22:37:00
一楼你说的也不是很清哪[em54]
二楼,我看了一下,的确如此,可能是修改的时候当焦点在SCALEMODE属性框上时不小心按了什么键……可为什么还是不能对齐呢?没理由啊……实不相瞒,这是我们课程设计的题目,像这样复杂的课题本应暑假就开始的,可是因为我太懒,再加上用电脑不是那么方便,就没弄,最后从同学那里弄到了这份源程序,读懂了,直接交差又不甘心,想有点“原创”,结果稍稍弄弄就成了这样……
4 楼
guoyong_cy [专家分:3050] 发布于 2008-09-21 22:57:00
[quote]
实不相瞒,这是我们课程设计的题目,像这样复杂的课题本应暑假就开始的[/quote]
你学什么的?这也叫复杂?我的天啊!
5 楼
guoyong_cy [专家分:3050] 发布于 2008-09-21 23:00:00
我帖子里还发布了几个源代码,曾经有人还拿去做过毕业设计的,顶你这个课程设计足够了,你拿去改改吧...
6 楼
xzcyr [专家分:0] 发布于 2008-09-21 23:06:00
我就想用这个,因为这个就是按照我们教材上的要求做的,我属于应用化学系,但VB是我们的必修课……如果只是求过关,我现在这程度也够了,可我不甘心……还有,有一处我不理解的是,源代码的PIC.WIDTH和PIC.HEIGHT都加了六,这也是我百思不得其解的一点。
7 楼
xzcyr [专家分:0] 发布于 2008-09-21 23:09:00
调试中,还是对不齐,且变成独眼蛇了。
8 楼
老大徒伤悲 [专家分:29120] 发布于 2008-09-22 12:53:00
奥。我也没有说清。
例如,你不可能将某控件的长度设置为100缇
在100缇的左右,要么是90缇,要么是105缇。
因为15缇是一个像素,像素不可分割。
这就是我前面说的“整像素”(当然了,有个错别字,嘿嘿)。
当不是这样的时候,vb会自动改成接近的整像素(至于改大还是改小,我记不清了,你可以试验)。
但是100绝不会自动变成150的。
9 楼
xzcyr [专家分:0] 发布于 2008-09-22 22:53:00
今天再检查,发现SHAPE的初始大小不对(看起来是圆的其实已经被设成椭圆了……),改了之后, 能对齐了,现在我只能怀疑是我或者其他人无意或有意的改变了这些属性……我现在暂时只剩下六楼的问题了。
我来回复