網路城邦
回本城市首頁 翠華流
市長:ABay  副市長: -Uncle-
加入本城市推薦本城市加入我的最愛訂閱最新文章
udn城市人文藝術藝術天地【翠華流】城市/討論區/
討論區不分版 字體:
看回應文章  上一個討論主題 回文章列表 下一個討論主題
乒乓球
 瀏覽1,839|回應4推薦9

ABay
等級:8
留言加入好友
文章推薦人 (9)

春山影
秋武
-Uncle-
曳白
紅粉豹
高月:流觴亭阿9(九)公然侮辱
蘭 陵
鳳彩翎:阿9公然侮辱
ABay

這是今天的傑作  乒乓球  按空白鍵開始

這個比較簡單  可是乒乓球跑起來卡卡的

目前請教高手中  順便附上程式碼

如果有人知道怎麼改  歡迎至訪客簿留言

按此下載

---------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        Point Ball_pos = new Point();
        int Ball_Width = 30;
        Point Ball_Speed = new Point();
        Pen myPen1 = new Pen(Color.Black, 5);
        Pen myPen2 = new Pen(Color.Brown, 5);
        int Margin_Left = 40;
        int Margin_Right = 120;
        int Bar_Len = 50;
        int Y_Right = 0;
        int Y_Left = 0;
        Random rd = new Random();

        public Form1()
        {
            InitializeComponent();
            InitializeComponent();
            Ball_pos.X = this.ClientSize.Width / 2;
            Ball_pos.Y = this.ClientSize.Height / 2;
            Ball_Speed = new Point(rd.Next(5) + 5, rd.Next(8) + 4);
            Y_Left = this.ClientSize.Height / 2;
            Y_Right = this.ClientSize.Height / 2;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
           
            e.Graphics.FillEllipse(Brushes.Blue,
                Ball_pos.X - Ball_Width / 2,
                Ball_pos.Y - Ball_Width / 2,
                Ball_Width, Ball_Width);
            e.Graphics.DrawEllipse(Pens.Black,
                Ball_pos.X - Ball_Width / 2,
                Ball_pos.Y - Ball_Width / 2,
                Ball_Width, Ball_Width);

           
            e.Graphics.DrawLine(myPen1,
                0 + Margin_Left, Y_Left - Bar_Len,
                0 + Margin_Left, Y_Left + Bar_Len);

           
            e.Graphics.DrawLine(myPen2,
                this.ClientSize.Width - Margin_Right, Y_Right - Bar_Len,
                this.ClientSize.Width - Margin_Right, Y_Right + Bar_Len);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Ball_pos.Y += Ball_Speed.Y;

           
            if (Ball_pos.Y >= this.ClientSize.Height - Ball_Width / 2)
            {
                Ball_pos.Y = this.ClientSize.Height - Ball_Width / 2;
                Ball_Speed.Y = -Ball_Speed.Y;
            }
            else if (Ball_pos.Y < Ball_Width / 2)
            {
                Ball_pos.Y = Ball_Width / 2;
                Ball_Speed.Y = -Ball_Speed.Y;
            }

            Ball_pos.X += Ball_Speed.X;
            if (Ball_pos.X < 200)
            {
                if (Ball_pos.Y > Y_Left)
                    Y_Left += 10 + rd.Next(11) - 5;
                else if (Ball_pos.Y < Y_Left)
                    Y_Left -= 10 + rd.Next(11) - 5;
            }

           
            if (Ball_pos.X >= this.ClientSize.Width - Ball_Width / 2 - Margin_Right)
            {
               
                if (Ball_pos.Y <= Y_Right + Bar_Len + Ball_Width &&
                    Ball_pos.Y >= Y_Right - Bar_Len - Ball_Width)
                {
                    Ball_pos.X = this.ClientSize.Width - Ball_Width / 2 - Margin_Right;
                    Ball_Speed.X = -Ball_Speed.X;
                }
                else
                {
                    this.Invalidate();
                    timer1.Enabled = false;
                    MessageBox.Show("你輸了!");
                }
            }
           
            else if (Ball_pos.X < Ball_Width / 2 + Margin_Left)
            {
                if (Ball_pos.Y <= Y_Left + Bar_Len + Ball_Width &&
                    Ball_pos.Y >= Y_Left - Bar_Len - Ball_Width)
                {
                    Ball_pos.X = Ball_Width / 2 + Margin_Left;
                    Ball_Speed.X = -Ball_Speed.X;
                }
                else
                {
                    this.Invalidate();
                    timer1.Enabled = false;
                    MessageBox.Show("你贏了!");
                }
            }

            this.Invalidate();
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            Y_Right = e.Y;
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Space)
            {
                Ball_pos.X = this.ClientSize.Width / 2;
                Ball_pos.Y = this.ClientSize.Height / 2;
                Ball_Speed = new Point(rd.Next(5) + 5, rd.Next(8) + 4);
                Y_Left = this.ClientSize.Height / 2;
                Y_Right = this.ClientSize.Height / 2;
                timer1.Enabled = true;
            }
        }
    }
}


回應 回應給此人 推薦文章 列印 加入我的文摘

引用
引用網址:https://city.udn.com/forum/trackback.jsp?no=59309&aid=3927078
 回應文章
我也要當投資人
    回應給: ABay(Piner) 推薦6


osami
等級:
留言加入好友

 
文章推薦人 (6)

曳白
-Uncle-
鳳彩翎:阿9公然侮辱
春山影
高月:流觴亭阿9(九)公然侮辱
秋武

回應 回應給此人 推薦文章 列印 加入我的文摘
引用網址:https://city.udn.com/forum/trackback.jsp?no=59309&aid=3927731
修身養性的興緻
推薦7


鳳彩翎:阿9公然侮辱
等級:8
留言加入好友

 
文章推薦人 (7)

春山影
高月:流觴亭阿9(九)公然侮辱
秋武
-Uncle-
ABay
曳白
鳳彩翎:阿9公然侮辱

                               

打從心底 崇拜市長   

寫詩詞是被那些自大的詩壇老前輩大軍壓境 迫不得已才展現的

呵呵! 休閒玩一下電腦科技 記得找投資人的時候 算我一份ㄛ

 

回應 回應給此人 推薦文章 列印 加入我的文摘
引用網址:https://city.udn.com/forum/trackback.jsp?no=59309&aid=3927282
像這樣
    回應給: ABay(Piner) 推薦7


高月:流觴亭阿9(九)公然侮辱
等級:7
留言加入好友

 
文章推薦人 (7)

春山影
秋武
-Uncle-
ABay
曳白
鳳彩翎:阿9公然侮辱
高月:流觴亭阿9(九)公然侮辱

我改好了,加上底圖  按此

可是電腦好像太厲害了,應該可以調一下讓它變笨

PS  我要戰鬥機遊戲~

回應 回應給此人 推薦文章 列印 加入我的文摘
引用網址:https://city.udn.com/forum/trackback.jsp?no=59309&aid=3927274
因為
    回應給: ABay(Piner) 推薦7


高月:流觴亭阿9(九)公然侮辱
等級:7
留言加入好友

 
文章推薦人 (7)

春山影
秋武
-Uncle-
ABay
曳白
鳳彩翎:阿9公然侮辱
高月:流觴亭阿9(九)公然侮辱

Form 1 屬性的DoubleBuffered沒有調

另外Timer的Interval可設定成喜歡的頻率

回應 回應給此人 推薦文章 列印 加入我的文摘
引用網址:https://city.udn.com/forum/trackback.jsp?no=59309&aid=3927266