日期:2014-05-17  浏览次数:20890 次

WInform小游戏,求解,最好写上思路和代码
使用时钟控件,创建一个窗体程序,

窗体上放置一个红色的方块,要求方块向

45度方向移动,当遇到窗体边界时反弹,

周而复始。

------解决方案--------------------
大体思路:定义地图坐标,可以用一个二维数组,让物体在该坐标里移动(用算法实现),同时判断物体坐标x,y是否大于等于地图边界x_m,y_m,如是则反弹(算法实现)

------解决方案--------------------
刚才随便弄了个,没规范命名。。。
有一个panel控件,填充窗体,一个picturebox控件,放你要显示的图片,代码如下
private void timer1_Tick(object sender, EventArgs e)
        {
            int f_x = panel1.Width;
            int f_y = panel1.Height;

            int p_x = pictureBox1.Location.X;
            int p_y = pictureBox1.Location.Y;

            if (p_x >= (f_x-pictureBox1.Width))      //右边超出窗体大小   除去运动物体的宽
                x = -5;
            else if (p_x <= 0)   //左边超出窗体大小
                x = 5;

            if (p_y >= (f_y-pictureBox1.Height))      //下边边超出窗体大小  除运动物体的高
                y = -5;
            else if (p_y <= 0)   //上边超出窗体大小
                y = 5;

            pictureBox1.Location = new Point(pictureBox1.Location.X + x, pictureBox1.Location.Y + y);
        }