Winform打砖块游戏制作step by step第4节---小球移动
2014-03-11 18:00
381 查看
一 引子
为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持。
预备知识,无GDI画图基础的童鞋请先阅读一篇文章让你彻底弄懂WinForm GDI 编程基本原理
二 本节内容---小球移动
1.主窗体启动后,一个小球自动开始运动,碰到界面的四周,进行反弹,反弹后运动速度可能变快或者变慢,主界面截图如下:
三 小球类设计
小球类的定义代码和之前的挡板类差不多,代码如下:
值得一提是run方法,4个条件判断分别判断是否碰到了界面的4条边。
四 主界面代码
主界面中,定义一个timer来表达小球的运动,timer初始化代码如下:
timer = new Timer();
timer.Interval = 10;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
timer处理函数如下(小球移动,刷新屏幕):
public void timer_Tick(object sender, EventArgs e)
{
m_Ball.Run();
this.Refresh();
}
窗体onPaint函数修改如下(重绘挡板及小球):
五 代码下载
本节代码下载
作者:宋波
出处:http://www.cnblogs.com/ice-river/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!旁边有“推荐”二字,你就顺手把它点了吧,相得准,我分文不收;相不准,你也好回来找我!
为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持。
预备知识,无GDI画图基础的童鞋请先阅读一篇文章让你彻底弄懂WinForm GDI 编程基本原理
二 本节内容---小球移动
1.主窗体启动后,一个小球自动开始运动,碰到界面的四周,进行反弹,反弹后运动速度可能变快或者变慢,主界面截图如下:
三 小球类设计
小球类的定义代码和之前的挡板类差不多,代码如下:
public class Ball { //坐标 public int XPos { get; set; } public int YPos { get; set; } public int SpeedX { get; set; } public int SpeedY { get; set; } public Rectangle Rect; /// <summary> /// 初始化小球位置和偏移值 /// </summary> public Ball(int x, int y, int speedX, int speedY) { this.XPos = x; this.YPos = y; this.SpeedX = speedX; this.SpeedY = speedY; } public void Draw(Graphics g) { using (SolidBrush sbrush = new SolidBrush(Color.Snow)) { Rect = new Rectangle(XPos, YPos, 20, 20); g.DrawEllipse(new Pen(Color.Gray), Rect); g.FillEllipse(sbrush, Rect); } // g.Dispose(); } public void Run() { XPos = XPos + SpeedX; YPos = YPos - SpeedY; if (XPos <= 0) SpeedX = (new Random().Next(3, 5)); if (XPos >= 378) SpeedX = -(new Random().Next(3, 5)); if (YPos <= 100) SpeedY = -(new Random().Next(3, 8)); if (YPos >= 580) SpeedY += (new Random().Next(3, 8)); } }
值得一提是run方法,4个条件判断分别判断是否碰到了界面的4条边。
四 主界面代码
主界面中,定义一个timer来表达小球的运动,timer初始化代码如下:
timer = new Timer();
timer.Interval = 10;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
timer处理函数如下(小球移动,刷新屏幕):
public void timer_Tick(object sender, EventArgs e)
{
m_Ball.Run();
this.Refresh();
}
窗体onPaint函数修改如下(重绘挡板及小球):
private void BrickGame_Paint(object sender, PaintEventArgs e) { m_Ball.Draw(e.Graphics); m_board.Draw(e.Graphics); }
五 代码下载
本节代码下载
作者:宋波
出处:http://www.cnblogs.com/ice-river/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!旁边有“推荐”二字,你就顺手把它点了吧,相得准,我分文不收;相不准,你也好回来找我!
相关文章推荐
- Winform打砖块游戏制作step by step第三节---移动挡板
- Winform打砖块游戏制作step by step第6节---画墙(砖块集合)以及双缓冲实现
- Winform打砖块游戏制作step by step第一节---主界面搭建
- Winform打砖块游戏制作step by step第二节---.画挡板
- Winform打砖块游戏制作step by step第7节---碰撞检测
- Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态
- Winform打砖块游戏制作step by step第6节---双缓冲应用
- Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态
- c#实现一个打砖块游戏step by step---开篇
- DotNet(C# )系统安装程序制作StepByStep(包括FrameWork安装和数据库安装...
- Python:pygame游戏编程之旅二(自由移动的小球)
- ROLL A BALL (Unity 3D 入门) 游戏制作指导 - 移动游戏对象
- unity3d,制作自己的第一个射击游戏demo,实现镜头跟随和键盘控制移动
- Step by Step,用JAVA做一个FLAPPYBIRD游戏(一)
- Unity3D游戏制作 移动平台上的角色阴影制作
- Step by Step,用JAVA做一个FLAPPYBIRD游戏(二)
- DotNet系统安装程序制作StepByStep(包括FrameWork安装和数据库安装配置)C#
- 零基础HTML5游戏制作教程 第3章 图形的移动
- Step by Step,用JAVA做一个FLAPPYBIRD游戏(六)
- FLEX ActionScript 游戏开发教程之[贪吃蛇]Step By Step