重庆海天软件学院第二学期 微软4班 WINFORM实训项目 截图:
最近学生们学习了2个月的C#和WINFORM,没有学习数据库。故设计了这样的一个小游戏,基本覆盖了C#语言常用的语法,已经面向对象的基本思想。本实训课程分为8个阶段来实践,效果非常好。故录制成视频分为8个阶段,每个阶段15分钟左右。
此游戏开发为在课堂上即兴编写,即兴录制。没有事先准备,故有些地方不是很完美,请见谅!不过,大家可以学习丁老师在完成软件开发中的需求的时候,思考的过程和完整的思路,以及遇到错误如果去调试和解决的方法,这个大家会有收获。
下载地址:http://www.kuaipan.com.cn/file/id_5393847563583517.htm
主要实现思路为:用GDI+在窗体上绘制图形,在主窗体加入了一个Time控件来做游戏循环,不断的绘图。使用的DoubleBuffer技术,屏幕不闪烁。效果还是可以的,但是在面向对象设计这块设计得有点罗嗦了,没有设计好,需要进一步完善。
代码展示:
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 CrazyBird_GDI
{
/// <summary>
/// 重庆海天软件工程学院 微软7班 WINFORM实训项目----疯狂的小鸟
/// 微软讲师:丁浩 Email:dinghao80@qq.com QQ:37112555
/// 项目需求:射击游戏
/// 实现步骤:1.采用GDI+技术,双缓冲实训精灵的绘制
/// 2.绘制背景
/// 3.绘制小鸟
/// 4.绘制小猪
/// 5.绘制子弹
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Bitmap bitmap;
Pig pig;
//第七步4
List<Bullet> bullets = new List<Bullet>();
BirdOP birdop;
//第十步6: 当子弹碰到小鸟的开关
bool isTouched = false;
private void timer1_Tick(object sender, EventArgs e)
{
//在time控件中循环绘制,约33帧的FPS
//第一步:导入所需资源
//第二步:搭建双缓冲模型,将资源不断的绘制在虚拟画布上面,这个技术可以消除屏幕闪烁
//最后将虚拟画布bitmap的内容复制在窗体绘图区
using (Graphics dc=Graphics.FromImage(bitmap))
{
//第三步:导入背景图片资源
BackGround bg = new BackGround(this.Width, this.Height);
bg.Draw(dc);
//固定窗体不能拖动
//**-------//第一阶段完成。思考:BackGround设计成了一个类,为什么?好处在哪儿?-------------------------------------------------------------------------------------------
//第四步:绘制小鸟 需求一共64只小鸟,成8*8排列 设计小鸟类
//第九步6:绘制小鸟
birdop.Draw(dc);//之前要装载小鸟
//**------//第二阶段完成。-----------------------------------------------------------------------------------------------
//第五步:绘制小猪
pig.Width &