-
前言:飞机大战是一个基于Cocos2d服务,使用Cocos Creator游戏引擎开发;可在电脑和移动端使用运行;此次我们将使用华为云的DevCloud进行飞机大战的开发到部署DevCloud:DevCloud是基于华为研发云的成功实践经验,通过云服务的方式提供一站式云端DevOps平台。开发团队基于云服务的模式按需使用,在云端进行项目管理、配置管理、代码检查、编译、构建、测试、部署、发布等。学到什么:学习使用华为云DevCloud进行云上开发部署认识华为云系列部分产品的使用(弹性云服务器、虚拟私有云等)简单的认识下Cocos2d的开发使用知识笔记:虚拟私有云:云上构建一个虚拟网络环境,跟我们的平常网络配置一样都可以申请带宽、创建子网、安全组等等;安全组:访问云上资源的一种策略;我们想要访问云上的目标资源时,必须达到安全组的规则才能进行访问;弹性云服务器:按需计费,随时随地就能帮我们搭建好一款线上的云服务器,方便我们学习使用线上的操作环境安装部署等等,一般都是按时计费,大大降低了我们的学习成本的同时还能减轻我们的经济,避免我们的云上资源浪费的情况;代码推送:将本地代码推送到远程仓库,远程仓库需配置我们的本地ssh的密钥或者https密码,这样才能完成身份配对,进行本地-远程的操作编译构建:将目标文件和必要文档制作成软件包,软件包进行发布部署应用:将软件包部署到云主机上Git:代码仓库管理工具,将我们的代码上传到DevCloud进行全站式管理Cocos Creator:轻量、易用的跨平台2D、3D游戏创作工具开发流程:代码开发云服务器配置代码推送到DevCloudDevCloud编译构建,打包软件包云服务器部署应用实验流程:将开发好的本地代码上传到远程DevCloud的代码管理仓库通过编译打成zip压缩包发布zip包到指定路径鲲鹏云服务器ECS进行部署、主机配置以下是我个人此次实验的部分截图,具体详情的实验操作流程可观看实验操作手册
-
基于DevCloud的飞机大战游戏DevOpsDevOps源于Google、Amazon、Facebook等企业实践,2008年PatrickDebois在“Agile 2008 conference”首次提出DevOps术语,由Filckr展示的开创性的“一天10次部署”,“基础设施即代码”(Mark Burgess和Luke Kanies),“敏捷基础设施”(Andrew Shafer),“敏捷系统管理”(Patrick DeBois),Amazon的“平台即服务”,这些相辅相成,让DevOps在2012~至今成为IT业界潮流。DevOps的五个要素•文化-建立一体化的全功能团队,打破开发(Dev)与技术运营(Ops)隔阂•自动化一利用可以利用的所有自动化工具•精益一以精益的方式小步快跑,持续改善•度量-建立有效的监控与度量手段快速获得反馈,推动产品和团队的持续改进•分享一不同职能、不同产品之间分享经验飞机大战简介飞机大战是一个基于Cocos2d服务,使用Cocos Creator游戏引擎开发的一款经典游戏,内容丰富有趣,可以在电脑和移动设备中运行。Cocos Creator介绍•轻量、易用的跨平台 2D、3D 游戏创作工具- Cocos Creator 是以内容创作为核心,实现了脚本化、组件化和数据驱动的游戏开发工具。具备了易于上手的内容生产工作流,以及功能强大的开发者工具套件,可用于实现游戏逻辑和高性能游戏效果。秉承着Cocos 一贯的开源、易上手、高性能和跨平台等产品特性,这款全新的游戏引擎旨在成为开发者创作 2D、 3D 游戏的新选择。
-
Rect是pygame中的一个创建矩形的对象,它包含一些属性主要是两块:坐标和长宽,Pygame 通过 Rect 对象存储和操作矩形区域,这篇文章主要介绍了pygame中Rect对象,需要的朋友可以参考下目录class pygame.Rect Rect对象的属性:方法剪切图片的应用class pygame.Rect Rect对象的属性:Rect 表示的区域必须位于一个 Surface 对象之上,比如游戏的主窗口(screen)。上述方法由四个关键参数值构成,分别是 left、top、width、height,为了方便大家理解这些距离的含义,下面给出了一张示意图:注意:在 Pygame 中以游戏主窗口的左上角为坐标原点。1.返回一个坐标数字12345x,ytop, left, bottom, rightcenterx, centerysizewidth, heightw,h;2.返回一个(X,Y)坐标数组12345678topleft (左上)bottomleft (左下)bottomright (右下)midtop(中上)midleft(左中)midbottom(底中)midright(右中)center(中心点坐标)方法Rect 是用于存储矩形坐标的 Pygame 对象。123Rect(left, top, width, height) -> RectRect((left, top), (width, height)) -> RectRect(object) -> RectRect(rectangle)指的是矩形,或者长方形,在 Pygame 中我们使用 Rect() 方法来创建一个指定位置,大小的矩形区域。Rect(矩形区域)对象提供了一些方法。如下表所示:方法说明返回值pygame.Rect.copy()— 拷贝 Rect 对象,返回与原始矩形具有相同位置和大小的新矩形。Rect对象pygame.Rect.move()— 移动 Rect 对象,返回按给定偏移量移动后的新矩形。x和y参数可以是任何整数值,正数或负数。Rect对象pygame.Rect.move_ip()— 原地移动 Rect 对象,与 Rect.move() 方法相同,但仅操作无返回副本。Nonepygame.Rect.inflate()— 放大和缩小 Rect 对象的尺寸,返回一个新矩形,其大小由给定的偏移量更改。矩形仍围绕其当前中心。负值将缩小矩形。Rect对象pygame.Rect.inflate_ip()— 原地放大和缩小 Rect 对象的尺寸,与 Rect.inflate() 方法相同,但仅操作无返回副本。Nonepygame.Rect.clamp()— 将一个 Rect 对象移动到另一个 Rect 对象的中心,返回一个新的矩形,该矩形被移动到参数Rect内。如果矩形太大而不能放在内部,它将在参数Rect内居中,但其大小不会更改。Rect对象pygame.Rect.clamp_ip()— 原地将一个 Rect 对象移动到另一个 Rect 对象的中心Nonepygame.Rect.clip()— 获取两个 Rect 对象互相重叠的部分,返回一个新矩形,该矩形被裁剪为完全位于参数矩形内。如果两个矩形开始时没有重叠,则返回一个0大小的矩形。Rect对象pygame.Rect.union()— 将两个 Rect 对象合并,返回完全覆盖两个提供的矩形区域的新矩形。新矩形内可能有原始矩形未覆盖的区域。Rect对象pygame.Rect.union_ip()— 原地将两个 Rect 对象合并,与 Rect.union() 方法相同,但仅操作无返回副本。Nonepygame.Rect.unionall()— 将多个 Rect 对象合并Rect对象pygame.Rect.unionall_ip()— 原地将多个 Rect 对象合并Nonepygame.Rect.fit()— 按照一定的宽高比调整 Rect 对象,返回一个新矩形,该矩形被移动并调整大小以适应另一个矩形。保留原始矩形的纵横比,因此新矩形的宽度或高度可能小于目标矩形。Rect对象pygame.Rect.normalize()— 翻转 Rect 对象(如果尺寸为负数),如果矩形的宽度或高度为负,则此操作将翻转矩形的宽度或高度。矩形将保持在同一位置,只交换边。Nonepygame.Rect.contains()— 检测一个 Rect 对象是否完全包含在该 Rect 对象内,contains(Rect) -> bool当参数完全在Rect内时返回true。boolpygame.Rect.collidepoint()— 检测一个点是否包含在该 Rect 对象内,如果给定点位于矩形内,则返回true。沿右边缘或下边缘的点不被视为位于矩形内。注意:对于矩形和直线之间的碰撞检测,可以使用 clipline() 方法。boolpygame.Rect.colliderect()— 检测两个 Rect 对象是否重叠,如果矩形的任何部分重叠(除了顶部+底部或左侧+右侧边缘),则返回true。注意:对于矩形和直线之间的碰撞检测,可以使用 clipline() 方法。boolpygame.Rect.collidelist()— 检测该 Rect 对象是否与列表中的任何一个矩形有交集,测试矩形是否与一系列矩形中的任何矩形碰撞。返回找到的第一个冲突的索引。如果未找到冲突,则返回索引-1。boolpygame.Rect.collidelistall()— 检测该 Rect 对象与列表中的每个矩形是否有交集,返回包含与矩形冲突的矩形的所有索引的列表。如果未找到相交矩形,则返回空列表。boolpygame.Rect.collidedict()— 检测该 Rect 对象是否与字典中的任何一个矩形有交集boolpygame.Rect.collidedictall()— 检测该 Rect 对象与字典中的每个矩形是否有交集[(key, value), …]下面看一组简单的示例演示,如下所示:123456789101112131415161718192021222324252627import pygame# 对应left/top/width/heightrect1 = pygame.Rect(0,0,100,100)print('x的值是{};y的值是{}'.format(rect1.x,rect1.y))print('bottom的值是{};right的值是{}'.format(rect1.bottom,rect1.right))# 设置居中的距离print(rect1.center,rect1.centerx,rect1.centery)# 返回值为 (centerx,top)print(rect1.midtop)# 返回值为 (right,centery)的元组print(rect1.midright)# 返回值为(left,bottom)print(rect1.bottomleft)# 返回矩形区域大小,元组格式print(rect1.size)输出结果如下:x的值是0;y的值是0bottom的值是100;right的值是100#设置中心努力(50, 50) 50 50(50, 0)#midright(100, 50)#bottomleft(0, 100)#size(100, 100)我们还可以通过属性对来设置,或者者更改矩形区域的大小,如下所示:12rect1.left = 30 rect1.center = (70,70)除了通过 Rect 对象来构造一个矩形区域之外,我们还可以使用rect属性来构建一个矩形区域。在 Pygame 中有许多函数都提供了rect属性,比如有下列函数:1surface.fill((0,0,255),rect=(100,100,100,50))上述代码会在 surface 对象的区域内选定一个 rect 区域,并将该区域填充为蓝色(RGB(0,0,255))。示例:12345678910111213141516171819202122232425262728293031323334import pygameimport sys pygame.init() size = width, height = 300, 300 bg = (255, 255, 255) # RGB 白色 # 创建指定大小的窗口 Surfacescreen = pygame.display.set_mode(size)# 设置窗口标题pygame.display.set_caption("Python Demo") clock = pygame.time.Clock() rect1 = pygame.Rect(0, 0, 100, 50)rect2 = pygame.Rect(50, 50, 200, 200) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() screen.fill(bg) pygame.draw.rect(screen, (255, 0, 0), rect1) pygame.draw.rect(screen, (0, 255, 0), rect2) pygame.draw.rect(screen, (0, 0, 255), rect1.fit(rect2)) pygame.display.flip() clock.tick(10)剪切图片的应用1)加载图片shoot_img = pygame.image.load(r'F:\Python STUDY\images\me11.png')2)矩形剪切图片12hero1_rect = pygame.Rect(0, 0, 136, 168)hero2 = shoot1_img.subsurface(hero1_rect)
-
【功能模块】HiLens studio【操作步骤&问题现象】1、通过清华镜像安装Pygame模块:pip3 install --user pygame -i https://pypi.tuna.tsinghua.edu.cn/simple2、或者直接安装:pip3 install --user pygame以上安装都报相同的错误:ERROR: Could not find a version that satisfies the requirement pygameERROR: No matching distribution found for pygame3、如果是下载安装包安装,那要下载什么版本呢?我下载了 linux64位系统,Python3版本,安装报错不支持。【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
看见云手机,眼前一亮,耳闻过没亲手用过,倒底是什么样子的呢?但是今天的实验不是很顺利,实验手册这里是这样的,ADB公网连接设置在这里。实际实验环境是这样的:木有,翻了半天,哪都木有~好吧好吧,放着慢慢玩~
-
首先要把输入输出信息保存为txt,如下是一段实例。 附件 有代码和txt实例S 1 1 R 1 2 -60 R 1 4 -100 R 11 1 -30 R 11 5 -100 R 11 8 -200 G E G W R 11 3 200 G E G有了坐标和每一步的方向,可以在原地图上增加移动操作。地图绘制见上一篇:https://bbs.huaweicloud.com/forum/thread-53934-1-1.html主要有以下改进:#读取文件 f=open('./result.txt') res=[] lines=f.readlines()if event.type == pygame.MOUSEBUTTONDOWN:#点击鼠标一次动一下,本来是控制帧率,但是一卡一卡的。 #实现每一步坐标和口罩数量变化 if res[step][0]=='G': step+=1 top = 0 left = 0 if res[step][0] == 'R':#增加捐赠小区 jzxq.append([int(res[step][1]), int(res[step][2])]) jzsl.append(int(res[step][3])) if res[step][0] == 'E': left = 1 zb[1]+=1 if res[step][0] == 'W': left = -1 zb[1] -= 1 if res[step][0] == 'N': top = -1 zb[0]-=1 if res[step][0] == 'S': top = 1 zb[0]+=1 for i in range(5):#判断是否到达小区 if zb==xqxq: xqsl=xqsl+have if xqsl>0: zj=xqsl xqsl=0 have=zj else:have=0 break if zb ==cangku:#判断到达仓库 have=100 for i in range(len(jzxq)):#判断到达需求小区 if zb==jzxq: have=jzsl+have if have>100: zj=have have=100 jzsl=zj-100 else: jzsl=0有了以上判断,就能读取文档跑地图啦。跑图视频:(忽略我的配送逻辑,有点随机。。平均成绩才101步)
上滑加载中
推荐直播
-
华为开发者空间玩转DeepSeek
2025/03/13 周四 19:00-20:30
马欣 山东商业职业技术学院云计算专业讲师,山东大学、山东建筑大学等多所本科学校学生校外指导老师
同学们,想知道如何利用华为开发者空间部署自己的DeepSeek模型吗?想了解如何用DeepSeek在云主机上探索好玩的应用吗?想探讨如何利用DeepSeek在自己的专有云主机上辅助编程吗?让我们来一场云和AI的盛宴。
即将直播 -
华为云Metastudio×DeepSeek与RAG检索优化分享
2025/03/14 周五 16:00-17:30
大海 华为云学堂技术讲师 Cocl 华为云学堂技术讲师
本次直播将带来DeepSeek数字人解决方案,以及如何使用Embedding与Rerank实现检索优化实践,为开发者与企业提供参考,助力场景落地。
去报名
热门标签