14146人加入学习
(31人评价)
C#编程-第三季-坦克大战-宇宙最简单2021最新版

使用VS2019 制作完成于2021年11月12日

价格 免费

添加游戏对象管理类

1、公共的创建初始化地图(静态方法)

2、私有的创建墙的方法(静态)

       传入坐标、图片

 

不可以动物体类

1、创建一个构造方法,需要传入坐标、图片

 

 

[展开全文]

创建基本的GameObject类(声明为一个抽象类)

坐标:构造函数变量X和Y

保护方法、abstract:绘制图片(必须重写,因为静态物体是一张图,动态物体是好几张图)

{

创建绘制方法(绘制自己)

获得GameFrame的图像类

绘制图像,并传入坐标

}

 

无法移动物体类,继承GO

构造函数图片变量

重写获得图片的方法,返回图片

右键点击(实现类)

 

可移动物体类,继承GO

枚举:上下左右

构造函数上下左右图片变量

构造函数变量速度

构造函数方向变量

重写获得图片方法,使用switch case的方法(上下左右),返回(上下左右)的四张图

 

透明图片的处理方法

将bitmap作为对象,默认null

switch case 

break

将黑色背景变为透明

返回bitmap即可

 

创建我坦克、敌坦克、子弹类,继承可移动物体类

 

[展开全文]

物体:坐标

不可移动物体:Image(有无)

可移动物体:Bitmap多图片状态(上下左右方向)

        我的坦克:人控制

        敌人坦克:AI控制

        子弹:AI控制

 

Image不透明

Bitmap可以设置透明度

[展开全文]

应用是不操作不进行

游戏是一直持续进行

 

游戏需要每秒持续循环执行

通过一个线程实现持续,不能放在Main函数内,否则会阻塞其他游戏逻辑

1、在Form1内创建一个线程,用于调用每一个tick的运行

2、在Form1内创建静态方法,通过类名就可以调用无需实例化,通过新线程启动起来

3、新建一个游戏框架类

4、框架内增加一个Start方法,创建一个Update方法

5、静态方法内,调用Start方法

6、创建While死循环,持续调用Update方法

7、创建变量,用于睡眠时间(每秒60帧)

8、死循环内增加一个睡眠时间,实现每秒60帧

9、但是,考虑updata本身有运行时间,真实情况下会让每秒低于60帧

10、关闭窗口,不会关系子线程,所以需要手动关闭子线程

11、找到Form1的窗体关闭事件FormClosed

12、把新创建的线程提出成为成员变量private Thread t;

13、在窗口关闭的方法里,使用Abort强制关闭线程

 

 

[展开全文]

将项目设置为启动项目

 

Form1.Designer.cs 

展开“Windows 窗体设计器生成的代码”

设置窗体的大小

设置窗体的名称

 

单个砖块30*30

小砖块15*15

画面450*450

[展开全文]

绘制图片

 

将图片导入项目

放到Resources.cesx

f放在了Resources文件夹内

Resource类,把所有资源放在了静态资源(加载静态资源)

如果需要引用这些资源,需要加入Resources的命名空间

 

使用资源

Resources.Boss //类型是bitmap,或是Image

Image image = Properties.Resources.Boss

 

g.DrawImage 方法

 

收缩代码(灰色字体表示)

#region 说明文字

#endregion

 

使用Image来接收资源

也可以使用Bitmap(继承自Image)可以使用另外一些功能:例如制定尺寸,让某个颜色变成透明)

MakeTransparent(某个颜色)

 

[展开全文]

不能在构造函数内进行绘制(因为当前窗体正在创建,绘制就无效了)

绘制窗体-属性-事件

Paint(重新绘制时)刷新内容时,新建时

双击Paint,撰写方法

 

创建画布

Graphics g = this.CreateGraphics();

 

创建一个颜色

Color c; //这是一个结构体

 

创建一个画笔

Pen p = new Pen(Color.Black);

 

调用draw方法

g.DrawLine()  有多个重载的方法

创建一条线

创建一个字符串

 

跳转到定义F12或Ctrl+点击

恢复跳转Ctrl+"-"(跳转到上一个光标位置)

[展开全文]

设置默认创建的位置

在Form的构造函数内添加 this.StartPosition = FormStartPosition.CenterScreen; 

CenterParent //父窗体内部的居中

 

Manual //自定义位置

this.Location = new Point(2000.500);

左上角为零零点,双屏的合起来计算

 

 图形设备接口GDI

[展开全文]

Properties

 

工具栏,拖入UI控件

Form1.Designer.cs 中出现对应的初始化控件代码(构造函数中显示初始化方法)

 

收缩某段代码(灰色字体)

 

业务(事件)代码,放在Form1.cs中

双击按钮进入某个按钮的方法内,撰写相应的功能

 

自行创建一个窗口类,继承自Form

生成一个窗口:

Application.Run(new MyForm());

 

[展开全文]

WinForm

创建windows应用的类集合,不用深究(使用率少)

 

新建项目:窗体应用(.NET framwork)

使用最新框架4.7.2

“引用”(类集合)

App.config(项目设置)

 

Program.cs

 

Form1.cs (窗体设计)

             public partial class Form1

Form1.Designer.cs

             partial class Form1

Form1.resx(放置窗体内的文字)

 

partial 把一个类放到两个文件里去定义,让功能分开管理(实际上同一个类)

[展开全文]

主线程和子线程不应该使用同一个资源,例如Console.WriteLine();

 

CPU交替执行多个任务,但人类看起来像是同时执行多个任务

 

Thread.Sleep

 

控制关闭线程:

1、myChileThread.Abort(); 强制关闭某个线程

2、添加一个isRun用来维持线程的运行(更推荐)

[展开全文]

多线程

主线程

Main方法:主线程

 

alt + enter  打开命名空间

 

Thread

Thread myT = Thread.CurrentThread 获取当前的线程

myT.Name = "自定义线程名字";

 

主线程Main

子线程

 

开启新线程

1、类里面创建一个用于子线程的方法

2、创建一个委托(把一个方法当成数据传递过来)

ThreadStart  start = new ThreadStart(子线程的方法); //新建一个线程运行这个方法

3、创建一个线程,运行委托的方法

Thread childThread = new Thread(start);

4、启动线程内的方法

childThread.Start();

 

步骤2、步骤3可以简写:

Thread childThread = new Thread(new ThreadStart(ChildThreadMethod));

 

线程的执行顺序,两个线程的执行情况不互通,所以会产生某些线程执行完成时间有先后出入的情况。

多个线程同时执行,执行快慢不确定,所以先后顺序不确定

 

  1. 线程不会自动启动:创建 Thread 对象后必须显式调用 Start() 方法

 

主线程不需要 ThreadStart

  • 主线程是自动创建的:当程序启动时,操作系统会自动创建主线程并执行 Main() 方法

  • 没有委托层:主线程直接执行入口方法,不需要任何委托包装

 

[展开全文]

自动类型转换(隐式转换)

1、从大类型到小类型可以自动转(反过来则不行)

 

强制类型转换(显式转换),可能会丢失数据

(int)

 

用父类型的方式来声明一个子类型的实例(大的装小的)

Father f = new Son();

自动转换,将son的类型转换成了father

强制类型转换:

Son s = (son)f;  //前提条件:必须首先是一个Son()的对象

也可以使用这样的写法:

Son s = f as Son; //如果转换不成功会返回null

 

alt + enter 显示VS的修复错误

[展开全文]

1、visual studio 2019使用alt+enter可以提供多种修改方案

[展开全文]

指定图片一种颜色透明:

名字.MakeTransparent(Color.要透明的颜色)

[展开全文]

线程中断:

childThread.Abort(); //childThread是随机命名的

[展开全文]

线程:

Thread t = Thread.CurrentThread;

[展开全文]

授课教师

问问题加入A计划,有专门负责答疑的老师哦!!!

课程特色

图文(1)
下载资料(1)
视频(35)