zoukankan      html  css  js  c++  java
  • VB弹力球源程序

    下载地址:https://files.cnblogs.com/files/daveylin/VB%E5%BC%B9%E5%8A%9B%E7%90%83lw.zip

    《VB弹力球》项目设计文档

    一、界面设计

    控件

    对象名

    属性名

    属性值

    含义

    Form

    frmMain

    Caption

    弹力球

     

    StartUpPosition

    2  '屏幕中心

    屏幕居中

    ScaleHeight

    5400

     

    ScaleWidth

    7755

     

    PictureBox

    Picture1

    Height

    5000

     

    Width

    6000

     

    Left

    100

     

    Top

    100

     

    Shape

    Shape1

    Shape

    3  'Circle

    球形

    BorderColor

    &H00000000&

    填充颜色

    FillStyle

    0  'Solid

    填充方式

    Height

    300

    球形大小

    Width

    300

    Line

    Line1

    BorderColor

    &H00FF0000&

     

    BorderWidth

    2

     

    X1

    2500

     

    X2

    3500

     

    Y1

    4600

     

    Y2

    4600

     

    CommandButton

    cmdStart

    Caption

    开始

     

    CommandButton

    cmdExit

    Caption

    退出

     

    Timer

    Timer1

    Interval

    150

    单位:毫秒

    Label

    Label1

    Caption

    得分

     

    Label2

    Caption

    0

     

    Label3

    Caption

    最高分

     

    Label4

    Caption

    0

     

    二、VB控件

    2.1 控件的通用特性

    1) 名称(name)属性

    每个控件都有名称属性,用于程序中对控件的辨别和操作。

    2) 焦点

    在窗体上,任何时候用户都只能操作其中的一个控件对象,这个被操作的对象称它获得焦点。

    下列方法可以将焦点赋予对象:

    • 运行时用鼠标选择对象
    • 运行时用快捷键选择对象
    • 运行时按Tab键将焦点移到对象上
    • 在程序代码中用SetFocus方法

    说明:

    • 框架、标签、菜单、直线、形状、图像框和时钟控件都不能接受焦点。
    • 程序运行时,按Tab键将使焦点按照控件TabIndex属性的顺序在控件间移动。

    3) 容器

    窗体、框架和图片框等都可以作为其他控件的容器。移动容器,容器中的控件也随之移动。容器中控件的Left和Top属性值是指其在容器里的位置。

    2.2 图形控件

    VB包含四个图形控件:PictureBox控件、Image控件、Shape控件和Line控件。

    PictureBox控件称为图片框,Image控件称为图像框。图片框和图像框可以显示的图像文件格式有位图文件(.bmp)、图标文件(.ico)、图元文件(.wmf)、JPEG格式文件(.jpg)和GIF格式文件(.gif)。

    1) 图片框PictureBox控件

    图片框(PictureBox)是用来在窗体上显示图像,或作为容器放置其它控件的控件。

    2) 形状Shape控件

    Shape属性取值及功能说明

    属性名

    数值

    常量

    功能说明

    Shape

    0

    VbShapeRectangle

    显示矩形

    1

    VbShapeSquare

    显示正方形

    2

    VbShapeOval

    显示椭圆

    3

    VbShapeCircle

    显示圆

    4

    VbShapeToundedRectangle

    显示圆角矩形

    5

    VbShapeRoundedSquare

    显示圆角正方形

    Height

    数值

     

    形状的高度

    刻度单位是对象所在容器坐标系中的刻度单位

    Width

    数值

     

    形状的宽度

    刻度单位是对象所在容器坐标系中的刻度单位

    Top

    数值

     

    形状的上边到容器上边的距离

    Left

    数值

     

    形状的左边到容器左边的距离

    3) 直线Line控件

    (x1,y1)和(x2,y2)两点确定一条直线,坐标(x,y)是相对于容器的坐标。

    属性名

    属性值

    说明

    X1

    数值

    直线一端点的X1坐标

    X2

    数值

    直线另一端点的X2坐标

    Y1

    数值

    直线一端点的Y1坐标

    Y2

    数值

    直线另一端点的Y2坐标

    2.3 时钟控件

    时钟控件以Interval为时间间隔产生Timer事件。

    Timer控件的重要属性

    属性名

    属性值

    说明

    Interval

    数值

    设置时钟控件的计时事件的时间间隔数。单位为ms(0.001s),

    取值范围(0~64767),即最大时间间隔不超过65秒。

    如:间隔时间为0.5秒是则Interval=500。

    间隔时间为1秒则Interval=1000。

    Interval=0时,时钟控件失效。

    Enabled

    逻辑值

    True:有效计时

    False:停止时钟工作

    2.4 坐标刻度

    坐标系的刻度取决于ScaleMode属性。

    常数

    设置值

    描述

    VbUser

    0

    指出ScaleHeight、ScaleWidth、ScaleLeft和ScaleTop属性中的一个或多个被设置为自定义的值

    VbTwips

    1

    (缺省值)缇(每逻辑英寸为1440缇;

    每逻辑厘米为567个缇)

    VbPoints

    2

    磅(每逻辑英寸为72个磅)

    VbPixels

    3

    像素(监视器或打印机分辨率的最小单位)

    VbCharacters

    4

    字符(水平每个单位=120缇;垂直每个单位=240缇)

    VbInches

    5

    英寸

    VbMillimeters

    6

    毫米

    VbCentimeters

    7

    厘米

    VbHimetric

    8

    HiMetric

    VbContainerPosition

    9

    控件容器使用的单位,决定控件位置

    VbContainerSize

    10

    控件容器使用的单位,决定控件的大小

    参考资料

    http://www10.zzu.edu.cn/ie_wangjunfeng/daquan/property/content/ScaleMode.htm

    缇:一个与屏幕无关的单位,用来保证屏幕应用程序对屏幕元素的定位和比例在所有的显示系统上的一致性。一缇等价于1/20个打印机的磅。一逻辑英寸大约有1440缇,一逻辑厘米约567缇(打印时的一英寸或一厘米所对应的屏幕上的长度)。

    磅:在印刷术语中,一磅是1/72英寸。字体大小通常用磅来表达。

    像素:即“图片元素”的简称,它是代表屏幕上的最小图形度量单位的点。像素是依赖于屏幕的,即屏幕元素的维数因显示系统和分辨率而异。

    逻辑英寸问题 (The Logical Inch Problem )

    http://chaoqunz.blog.163.com/blog/static/615487772008113094924627/

    三、小球运动轨迹设计

    3.1 小球直线运动

    Height和Width决定了小球大小的属性,Top和Left决定了小球相对于容器的位置。显然,要让小球运动起来,就改变它的Top和Left属性。

    先介绍容器的坐标

     

     小球在容器的相对位置关系

     

     想要改变小球的位置,只要改变小球的Top和Left属性。

    假设小球运动轨迹符合f(x)=kx,设小球的坐位(T1,L1),经过0.1s后,向后下方运动50刻度单位到(T2,L2),显然存在等式:T1+50=T2,L1+50=L2。

    3.2 小球碰到墙壁

        If Shape1.Top < 0 Then
            Shape1.Top = 0
            y_step = -y_step
        End If
        
        If Shape1.Left < 0 Then
            Shape1.Left = 0
            x_step = -x_step
        End If
        
        If Shape1.Left > Picture1.Width - Shape1.Width Then
            Shape1.Left = Picture1.Width - Shape1.Width
            x_step = -x_step
        End If

    四、挡板运动轨迹设计

    4.1 挡板键盘控制

    Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
    '触发Picture1对象的键盘按下事件,返回键盘的扫描码
    'keycode 37 = Left
    'KeyCode 38 = Up
    'KeyCode 39 = Right
    'KeyCode 40 = Down
        If KeyCode = 37 Then
            If Line1.X1 < 0 Then
                Line1.X1 = 0
                Line1.X2 = 1000
            Else
                Line1.X1 = Line1.X1 - degree
                Line1.X2 = Line1.X2 - degree
            End If
        End If
        If KeyCode = 39 Then
            If Line1.X2 > Picture1.Width Then
                Line1.X1 = 5000
                Line1.X2 = 6000
            Else
                Line1.X1 = Line1.X1 + degree
                Line1.X2 = Line1.X2 + degree
            End If
        End If
    End Sub

    4.2 挡板碰到墙壁

    If Line1.X1 < 0 Then
       Line1.X1 = 0
       Line1.X2 = 1000
    If Line1.X2 > Picture1.Width Then
       Line1.X1 = 5000
       Line1.X2 = 6000

    五、挡板接住小球

    5.1 判断挡板接住小球

        '接住小球,小球反弹
        '判断接住小球的情况
        '小球反弹的运动轨迹
        If Shape1.Left + 150 >= Line1.X1 And Shape1.Left + 150 <= Line1.X2 And Shape1.Top >= Line1.Y1 - Shape1.Height Then
            Shape1.Top = Line1.Y1 - Shape1.Height
            y_step = -y_step * 1.01
            x_step = x_step * 1.01
            Label2.Caption = Str(Val(Label2.Caption) + 1)
            If zgf < Val(Label2.Caption) Then
                zgf = Val(Label2.Caption)
            End If
        End If
  • 相关阅读:
    用的springboot+mybatis plus,报错bean无法实例化
    coding使用
    drop表后仍占表空间解决办法
    oracle从零开始学习笔记 三
    oracle从零开始学习笔记 二
    录制简单的自动化测试工具SlikMobile初体验
    appium 等待页面元素加载
    sdk 更新的时连接不上dl-ssl.google.com解决办法
    oracle从零开始学习笔记
    oracle: tochar(sysdate,'D')函数
  • 原文地址:https://www.cnblogs.com/daveylin/p/13159299.html
Copyright © 2011-2022 走看看