自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(693)
  • 收藏
  • 关注

原创 python002(vi简介02—vi和vim以及vi的特点)

在很多Linux发行版中,直接把vi做成vim的软连接viVisual interface,是Linux中最经典的文本编辑器 vi的核心设计思想——让程序员的手指始终保持在键盘的核心区域,就能完成所有的编辑操作 vi的特点:没有图形界面的功能强大的编辑器 只能编辑文本内容 不支持鼠标操作 没有菜单 没有命令vi编辑器在系统管理、服务器管理编辑文件时,其功能永远不是图形界面的编...

2019-09-24 22:31:27 362

原创 python001(vi简介01—学习vi的目的)

vi——终端中的编辑器1.vi简介在工作中,要对服务器上的文件进行简单的修改,可以使用ssh远程登陆到服务器上,并且使用vi进行快速的编辑即可 常见需要修改的文件包括:源程序 配置文件,例如ssh的配置文件在没有图形界面的环境下,要编辑文件,vi是最佳选择!...

2019-09-24 22:25:12 259

原创 python048(碰撞检测02—敌机撞毁英雄)

pygame.sprite.spritecollide()判断某个精灵和指定精灵组中的精灵的碰撞 如果将dokill设置为True,则指定精灵组中发生碰撞的精灵将被自动移除 collided参数是用于计算碰撞的回调函数 返回精灵组中跟精灵发生碰撞的精灵列表...

2019-09-17 22:23:54 314

原创 python047(碰撞检测01—子弹摧毁敌机)

碰撞检测pygame提供了两个非常方便的方法可以实现碰撞检测:pygame.sprite.groupcollide()groupcollide(group1,group2,dokill1,dokill2,collided=None)如果将dokill设置为True,则发生碰撞的精灵将被自动移除 collided参数是用于计算碰撞的回调函数 如果没有指定,则每个精灵必须有一个re...

2019-09-15 21:51:02 477

原创 python046(发射子弹04—一次发射三枚子弹)

for i in (0, 1, 2): bullet = Bullet() bullet.rect.bottom = self.rect.y - i*20 bullet.rect.centerx = self.rect.centerx self.bullets.add(bullet)

2019-09-15 21:35:38 407

原创 python045(发射子弹03—发射子弹)

发射子弹在Hero方法的初始化方法中创建子弹精灵组属性 修改__update_sprites方法,让子弹精灵组调用update和draw方法 实现fire方法创建子弹精灵 设置初始位置——在英雄的正上方 将子弹添加到精灵组...

2019-09-10 22:39:27 250

原创 python044(发射子弹02—定义子弹类)

需求回顾——子弹需求子弹从英雄的正上下方发射沿直线向上方飞行 飞出屏幕后,需要从精灵组中删除Bullet——子弹初始化方法指定子弹图片 初始速度=-2——子弹需要向上方飞行重写update()方法判断是否飞出屏幕,如果是,从精灵组删除定义子弹类在plane_sprites新建Bullet继承自GameSprite 重写初始化方法,直接指定图片名称、并且设置初始速度 重...

2019-09-09 22:22:11 283

原创 python043(发射子弹01—添加并监听英雄发射子弹事件)

需求回顾——英雄需求游戏启动后,英雄出现在屏幕的水平中间位置,距离屏幕底部120像素 英雄每隔0.5秒发射一次子弹,每次连发三枚子弹 英雄默认不会移动,需要通过左右方向键,控制英雄在水平方向移动添加发射子弹事件pygame的定时器使用套路非常固定:定义定时器常量——eventid 在初始化方法中,调用set_timer方法设置定时器事件 在游戏循环中,监听定时器事件def...

2019-09-09 21:51:53 146

原创 python041(英雄05—控制英雄左右移动)

在Hero类中重写update方法用速度speed和英雄rect.x相加 不需要调用父类方法在__event_handler方法中根据左右方向键设置英雄的速度即可

2019-09-07 22:15:25 275

原创 python040(英雄04—两种按键方式对比)

移动英雄位置第一种方式判断event.type == pygame.KEYDOWN 第二种方式首先使用pygame.key.get_pressed()返回所有按键元组 通过键盘常量,判断元组某一个键是否被按下——如果被按下,对应数值第一种方式elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT: ...

2019-09-05 22:51:36 143

原创 python039(英雄03—绘制英雄)

在__create_sprites,添加英雄精灵和英雄精灵组后续要针对英雄做碰撞检测以及发射子弹 所以英雄要单独定义成属性在__update_sprites,让英雄精灵组调用update和draw方法...

2019-09-05 22:35:27 119

原创 python038(英雄02—准备英雄类)

在plane_sprites新建Hero类 重写初始化方法,直接指定图片名称,并且初始速度设置为0 设置英雄的初始位置pygame.Rect x,y, left,top,bottom,right, center,centerx,centery, size,width,height centerx = x+0.5*widt...

2019-09-04 23:03:08 361

原创 python037(英雄01—需求分析和类设计)

目标设计英雄和子弹类 使用pygame.key.get_passed()移动英雄 发射子弹设计英雄和子弹类英雄需求游戏启动后,英雄出现在屏幕的水平中间位置,距离屏幕底部120像素 英雄每隔0.5秒发射一次子弹,每次连发三枚子弹 英雄默认不会移动,需要通过左/右方向键,控制英雄在水平方向移动子弹需求子弹从英雄的正上方发射沿直线向上方飞行 飞出屏幕后,需要从精灵组中删除...

2019-09-04 22:52:01 116

原创 python036(敌机06—销毁飞出屏幕的敌机)

移出屏幕销毁敌机敌机移出屏幕之后,如果没有撞到英雄,敌机的历史使命已经终结 需要从敌机组删除,否则会造成内存消费检测敌机被销毁__del__内置方法会在对象被销毁前调用,在开发中,可以用于判断对象是否被销毁def __del__(self): print("敌机挂了 %s" % self.rect)从精灵组中删除if self.rect.y >= S...

2019-09-04 22:18:36 150

原创 python034(敌机04—定时创建并显示敌机精灵)

演练步骤在__create_sprites()方法中,添加敌机精灵组敌机是定时创建的,因此在初始化方法中,不需要创建敌机在__event_handler()方法中,创建敌机,并且添加到精灵组调用精灵组的add方法可以向精灵组添加精灵在__update_sprites()方法中,让敌机精灵组调用update和draw方法...

2019-08-24 22:02:38 162

原创 python033(敌机03—设计并准备敌机类)

设计Enemy类游戏启动后,每隔1秒会出现一架敌机 每架敌机向屏幕下方飞行,飞行速度各不相同 每架敌机出现的水平位置也不相同 当敌机从屏幕下方飞出,不会再飞回到屏幕初始化方法指定敌机图片 随机敌机的初始位置和初始速度重写update方法判断是否飞出屏幕,如果是,从精灵组中删除...

2019-08-23 22:19:06 88

原创 python032(敌机02—定义并且监听创建敌机的定时器事件)

pygame的定时器使用套路非常固定:定义定时器常量——eventid 在初始化方法中,调用set_timer方法设置定时器事件 在游戏循环中,监听定时器事件

2019-08-22 21:56:08 178

原创 python031(敌机01—定时器语法介绍)

定时器在pygame中可以使用pygame.time.set_timer()来添加定时器 所谓定时器,就是每隔一段时间,去执行一些动作set_timer(eventid, ,milliseconds)set_timer可以创建一个事件 可以在游戏循环的事件监听方法中捕获到该事件 第1个参数事件代号需要基于常量pygame.USEREVENT来指定...

2019-08-19 20:53:27 236

原创 图的存储结构02—邻接表表示法

图的邻接表存储表示代码实现(C语言) 定义邻接表#define MAX_VERTEX_NUM 20 // 最大结点数typedef int VertexType; // 定义结点信息的类型typedef char* InfoType; // 存放弧/边的信息typedef struct ArcNode{ int adjvex; // 该弧所指向的顶点的位置 struct...

2019-08-18 12:37:49 302

原创 图的存储结构01—数组表示法

图的数组(邻接矩阵)存储表示代码实现(C语言) 定义邻接矩阵// ----- 图的数组(邻接矩阵)存储表示 -----typedef int VRType; //顶点关系类型,无权图用1或0表示相邻否,带权图则为权值类型 typedef char* InfoType; //弧/边相关信息typedef int VertexType; #define INFINITY INT_...

2019-08-17 11:46:06 564

原创 python030(背景图像04—利用初始化方法简化背景精灵创建)

class Background(GameSprite): def __init__(self, is_alt): super().__init__("./images/background.png") if is_alt: self.rect.y = -self.rect.height

2019-08-15 22:00:37 117

原创 python028(背景图像02—背景类的设计与基本实现)

初始化方法直接指定背景图片 is_alt判断是否是另一张图片 False表示第一张图像,需要与屏幕重合 True表示第二张图片,在屏幕正上方update方法判断是否移动出屏幕,如果是,将图像设置到屏幕正上方,从而实现交替滚动class Background(GameSprite): def update(self): super().update()...

2019-08-13 22:15:26 84

原创 python027(背景图像01—交替滚动实现思路分析)

游戏启动后,背景图像会连续不断地向下方移动 在视觉上产生英雄的飞机不断向上方飞行的错觉游戏的背景不断变化 游戏的主角位置保持不变

2019-08-12 21:39:55 787

转载 C#实战(NotePad_Prepare)

这一应用主要功能“克隆”自Windows所附之“记事本”。构建一个软件系统类似于搭积木具体开发的过程就像是拼图 编程实际上是一种组合的艺术程序特性自定义应用程序图标和主窗体图标 时间的自动显示 调整窗体大小,文本框和显示时间控件能自动调整大小和位置 能判断用户是否对文档进行了修改知识点关于TextBoxTextBox支持多行:控件右上勾选MultiLine属性 ...

2019-08-11 22:32:27 160

原创 python026(框架搭建05—搭建启动游戏方法结构)

def start_game(self): while True: self.clock.tick(60) self.__event_Handler() self.__check_collide() self.__update_sprites() pygame.display.update()...

2019-08-11 22:14:54 106

原创 严书中序遍历线索树的线索化&遍历

二叉树的二叉线索存储表示// -----二叉树的二叉线索存储表示-----typedef enum{Link,Thread}PointerTag; // 指针标志:0为指针,1为线索typedef struct BiThrNode{ TElemType data; // 结点元素信息 struct BiThrNode *lchild,*rchild; // 左右孩子指针 Poi...

2019-08-11 15:44:22 154

原创 二叉树的遍历问题

递归算法先序遍历// 递归先序遍历Status PreOrderTraverse(BiTree T) { if (T==NULL) return OK; printf("%d\n",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild);} 中序遍历// 递归中...

2019-08-09 18:21:37 179

原创 python025(框架搭建04—使用常 量定义窗口大小)

使用常量代替固定的数值常量——不变化的量 变量——可以变化的量常量的定义定义常量和定义变量的语法完全一样,都是使用赋值语句 常量的命名应该所有字母都使用大写,单词与单词之间使用下划线连接常量的好处阅读代码时,通过常量名见名知义,不需要猜测数字的含义 如果需要调整值,只需要修改常量定义就可以实现统一修改...

2019-08-08 19:54:13 179

原创 python024(框架搭建03—游戏初始化)

游戏初始化设置游戏窗口 创建游戏时钟 创建精灵、精灵组def __init__(self): self.screen = pygame.display.set_mode() self.clock = pygame.time.Clock() self.__create_sprites()...

2019-08-08 19:35:27 188

原创 数据结构与算法题目集(中文)6-7 在一个数组中实现两个堆栈

Stack CreateStack( int MaxSize ){ Stack S; S=(Stack)malloc(sizeof(struct SNode)); S->Data=(ElementType*)malloc(sizeof(ElementType)*MaxSize); S->MaxSize = MaxSize; S->Top...

2019-08-08 15:40:13 139

转载 北京理工大学金旭亮老师C#(116—MoreOnUnitTest)

编写单元测试代码注意事项每次只针对一个特性编写测试代码 使用足够多的“断言(Assert)”验证代码的正确性 不测试过于简单的方法:比如get和set方法 不测试私有方法编写单元测试的First原则Fast单元测试必须运行得很快 没有反复运行的单元测试,毫无价值Independent单元测试方法的执行顺序无关紧要 单元测试的各个方法之间不应该相互依赖Repeatable...

2019-08-07 22:39:16 90

原创 python023(框架搭建02—明确文件职责准备主游戏类)

明确文件职责plane_main封装主游戏类 创建游戏对象 启动游戏plane_sprites封装游戏中所有需要使用的精灵子类 提供游戏的相关工具代码实现新建plane_main.py文件,并且设置为可执行 编写基础代码...

2019-08-07 22:12:46 74

转载 北京理工大学金旭亮老师C#(115—HowToCodeUnitTest)

VS使用[TestClass]和[TestMethod]标识单元测试代码 MSTest测试框架中,为Assert类设计了一系列的方法实现“断言”测试期望抛出的异常public int Sum(int from, int to){ if (from > to) { throw new ArgumentException("参数from必须小于to...

2019-08-06 22:45:50 109

原创 python022(框架搭建01—明确飞机游戏类的设计)

游戏初始化设置游戏窗口:screen = pygame.display.set_mode((480, 700)) 创建游戏时钟:clock = pygame.time.Clock() 创建精灵、精灵组:enemy = pygame.GameSprite("./images/enemy1.png")游戏循环设置刷新帧率:clock.tick(60) // 一秒钟画六十次 事件监听:...

2019-08-06 21:49:24 89

原创 数据结构与算法题目集(中文)6-6 带头结点的链式表操作集

// 创建并返回一个空的线性表List MakeEmpty(){ List l; l=(List)malloc(sizeof(struct LNode)); l->Next=NULL; return l; }// 返回线性表中X的位置。若找不到则返回ERRORPosition Find( List L, ElementType X ){ List ...

2019-08-06 13:44:10 152

原创 python021(精灵和精灵组04—创建敌机并且实现敌机动画)

使用刚刚派生的游戏精灵和精灵组创建敌机并且实现敌机动画步骤使用from导入plane_sprites模块 在游戏初始化创建精灵对象和精灵组对象 在游戏循环中让精灵组分别调用update()和draw(screen)方法职责精灵封装image、位置rect和速度speed 提供update()方法,更新位置rect精灵组包含多个精灵对象 update方法,让组中的所有精灵调...

2019-08-05 23:09:36 261

转载 北京理工大学金旭亮老师C#(114—WhatIsUnitTest)

理解单元测试单元测试是对类中方法“正确性”的测试 输入的数据+预期的结果=测试用例[TestMethod]public void DoubleValueTest(){ // 1.Arrange MyClass target = new MyClass(); // 2.设定测试用例 int value = 1; int expected = 2...

2019-08-05 22:08:17 94

原创 数据结构与算法题目集(中文)6-5 链式表操作集

// 返回线性表中首次出现X的位置。若找不到则返回ERRORPosition Find( List L, ElementType X ){ List l; for (l=L;l!=NULL;l=l->Next) { if (l->Data==X) return l; } return ERROR;}...

2019-08-05 14:30:17 337

原创 数据结构与算法题目集(中文)6-4 链式表的按序号查找

ElementType FindKth( List L, int K ){ List l; int count=0; for(l=L;l!=NULL;l=l->Next) { count++; if (count==K) return l->Data; } ...

2019-08-05 12:50:53 152

原创 数据结构与算法题目集(中文)6-3 求链式表的表长

int Length( List L ){ int count=0; while (L!=NULL) { count++; L=L->Next; } return count;}EASY!

2019-08-05 12:45:49 260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除