回 帖 发 新 帖 刷新版面

主题:[讨论]我正在写(准确地说是改写……)一个贪食蛇游戏,遇到了这么一件怪事。

正版的源程序和我的修改都在压缩包里,当然我的修改版已经是乱七八糟了。这里简要说一下最严重的问题。正版的源程序是使用代码绘制界面的:'调整大小与位置
    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分割器拖出了个文件编码方式的问题,这次又不知被我撞到什么了……

回复列表 (共9个回复)

沙发

LEFT,TOP,WIDTH,HEIGHT属性值如果不是正像素(不论使用什么单位),都会自动取整的。

其他的,你没有说清。

板凳

看了你的 代码,你那个pic(picturebox)的scalmode怎么设置成0了,应该是3,改了后基本正常了,好像line对的还不是很齐。

这种小游戏,作为练习的话,可以自己设计代码来写,何必去改别人的呢?!

3 楼


一楼你说的也不是很清哪[em54]
二楼,我看了一下,的确如此,可能是修改的时候当焦点在SCALEMODE属性框上时不小心按了什么键……可为什么还是不能对齐呢?没理由啊……实不相瞒,这是我们课程设计的题目,像这样复杂的课题本应暑假就开始的,可是因为我太懒,再加上用电脑不是那么方便,就没弄,最后从同学那里弄到了这份源程序,读懂了,直接交差又不甘心,想有点“原创”,结果稍稍弄弄就成了这样……

4 楼

[quote]
实不相瞒,这是我们课程设计的题目,像这样复杂的课题本应暑假就开始的[/quote]

你学什么的?这也叫复杂?我的天啊!

5 楼

我帖子里还发布了几个源代码,曾经有人还拿去做过毕业设计的,顶你这个课程设计足够了,你拿去改改吧...

6 楼

我就想用这个,因为这个就是按照我们教材上的要求做的,我属于应用化学系,但VB是我们的必修课……如果只是求过关,我现在这程度也够了,可我不甘心……还有,有一处我不理解的是,源代码的PIC.WIDTH和PIC.HEIGHT都加了六,这也是我百思不得其解的一点。

7 楼

调试中,还是对不齐,且变成独眼蛇了。

8 楼

奥。我也没有说清。
例如,你不可能将某控件的长度设置为100缇
在100缇的左右,要么是90缇,要么是105缇。
因为15缇是一个像素,像素不可分割。
这就是我前面说的“整像素”(当然了,有个错别字,嘿嘿)。

当不是这样的时候,vb会自动改成接近的整像素(至于改大还是改小,我记不清了,你可以试验)。
但是100绝不会自动变成150的。

9 楼

今天再检查,发现SHAPE的初始大小不对(看起来是圆的其实已经被设成椭圆了……),改了之后, 能对齐了,现在我只能怀疑是我或者其他人无意或有意的改变了这些属性……我现在暂时只剩下六楼的问题了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册