- 博客(912)
- 资源 (13)
- 收藏
- 关注
原创 GESP等级认证C++三级17-位运算5-2
本文介绍了按位或运算的规则与应用。按位或是二元操作,对二进制数逐位执行逻辑"或"运算:两位均为0时结果为0,否则为1。其特点是:任何数与1运算结果为1,与0运算保持原值,与自身运算不变。代码实现使用"|"运算符,常用于权限管理、标志位设置等场景。例如,可用二进制位表示不同权限,通过按位或合并多个权限,再配合按位与检查特定权限。文中通过用户权限设置实例展示了如何用按位或赋予读、执行、复制权限(结果为0b1101)。
2025-10-13 20:38:16
2
原创 GESP等级认证C++三级16-位运算5-1
摘要:位运算是对整数的二进制形式进行按位操作,包括与、或、异或、取反、左移和右移6种运算。位运算直接对应CPU指令,效率高于算术运算。按位与运算规则为两数对应位均为1时结果为1,否则为0。其应用包括:判断奇偶性(与1运算)、检查特定位值(与特定位掩码运算)、清除特定位(与0运算)。位运算是计算机底层高效操作,能实现多种数值处理功能。
2025-10-13 20:36:42
118
原创 GESP C++等级认证三级15-原码反码补码2-2
本文介绍了补码的计算原理及其应用。补码既能实现正负整数相加,又能提高计算效率:正数补码与原码相同,负数补码为原码加1(或通过寻找首个1后取反左边数值位)。8位补码取值范围为-128~127,解决了原码/反码中±0的问题。真题解析部分通过具体题目演示了原码、反码和补码的转换方法,如补码10111010对应原码11000101(-69)。文中还涉及数值溢出处理和8位二进制数的表示范围等关键概念。
2025-10-12 21:22:10
376
原创 GESP C++等级认证三级14-原码反码补码2-1
摘要:计算机中整数存储采用原码、反码和补码三种方式。原码最高位表示符号,数值位直接表示绝对值,但正负数相加会出现错误。反码通过数值位取反解决加减问题,但仍存在+0/-0冗余。8位原码/反码的取值范围均为-127~127(含±0)。补码则能统一零的表示并提高运算效率,是现代计算机普遍采用的整数表示方法。(148字)
2025-10-12 21:20:47
223
原创 GESP C++等级认证三级13-操作string2-2
本文介绍了C++中string类的常用操作方法:1. 使用replace()函数实现字符串替换,需指定起始位置、替换长度和新字符串;2. 通过substr()函数截取子串,可设置起始位置和截取长度;3. 用length()或size()获取字符串长度;4. 解析了多个真题,涉及字符串比较、反向查找和截取操作的注意事项,如string对象可直接用"=="比较,而字符数组需用strcmp()函数。
2025-10-10 20:49:55
388
原创 GESP C++等级认证三级12-操作string2-1
本文介绍了C++中string类的基本操作,包括拷贝、连接、比较和查找功能。通过"="运算符实现字符串拷贝,使用"+"运算符连接字符串,关系运算符(>、<、==)用于字符串比较。查找功能通过find()和rfind()函数实现,可查找字符或子串,未找到时返回string::npos。这些操作比字符数组更简便高效,文中配有代码示例和运行效果说明,展示了string类在处理文本时的实用性和便利性。
2025-10-10 20:47:52
376
原创 GESP等级认证C++三级10-操作字符数组2-2
摘要:文章介绍了C语言中strchr()和strlen()函数的使用方法。strchr()用于在字符数组中查找指定字符,返回首次出现位置的指针;strlen()用于获取以'\0'结尾的字符串长度。同时指出strlen()返回的是非空字符数,而sizeof可获取数组实际长度。最后通过2021年12月选择题解析,说明字符串占用内存空间应包含结尾'\0'字符。
2025-10-09 21:04:42
412
原创 GESP等级认证C++三级11-操作字符数组2-1
本文介绍了字符数组的三种常用操作:拷贝、连接和比较。1)使用strcpy()函数实现字符数组拷贝,需确保目标数组足够大;2)通过strcat()函数连接字符数组,要求目标数组包含有效字符串并有足够空间;3)利用strcmp()函数比较字符数组,返回值为负、正或零表示比较结果。文中提供了各函数的语法格式、参数说明和使用示例,并强调操作时需包含相应头文件。
2025-10-09 21:02:40
482
原创 Pygame中实现图像旋转效果-应用2-2
摘要:本文介绍了使用Pygame创建天体运动模拟系统的实现方法。通过定义CelestialBody类封装天体属性(大小、距离、旋转速度等),并实例化太阳、地球、月球、土星及其卫星等天体对象。系统采用分层结构管理天体关系,通过update_position()方法计算天体位置和旋转状态,draw()方法实现轨道和天体的可视化渲染。程序运行时可实时显示各天体的自转和公转运动,其中旋转速度的正负控制转动方向,土星环等特殊天体特征也得到体现。完整代码展示了Pygame框架下天体运动的完整实现过程。
2025-09-29 21:07:44
397
原创 Pygame中实现图像旋转效果-应用2-1
摘要:本文介绍了使用Pygame实现太阳系星球运行模拟的方法。通过定义天体类CelestrialBody,包含恒星、行星和卫星的共性属性(名称、大小、图片、自转/公转速度等)。重点阐述了三个关键方法:1)init()初始化天体属性;2)update_position()根据是否有父天体计算不同天体的位置(恒星固定,行星和卫星随公转角度变化);3)draw()方法绘制天体、轨道环及名称。该方法利用数学计算和Pygame的图像旋转功能,实现了真实的星球运行效果。
2025-09-29 21:05:16
1022
原创 Pygame中实现图像旋转效果-高级2-2
本文介绍了在Pygame中实现飞船围绕星球旋转运动的代码实现。通过math.atan2()计算飞船运动方向,并转换为角度值,再使用pygame.transform.rotate()旋转飞船图片。飞船位置由三角函数计算得出,并不断更新位置以实现环绕效果。文中还提供了完整的示例代码,包括星球的自转和飞船的环绕运动,以及相关参数的设置和位置更新逻辑。
2025-09-25 19:36:01
465
原创 Pygame中实现图像旋转效果-高级2-1
本文介绍了如何通过图像旋转实现飞船围绕星球运动的视觉效果。文章解释了位置方向与运动方向的区别,指出在动态场景中应该根据运动方向而非位置方向确定旋转角度。通过代码示例,展示了如何计算飞船当前位置(基于轨道半径和角度)以及位置差(当前与前一时刻位置的差值)来确定运动方向。该方法可使游戏对象自然朝向移动方向旋转,提升动画的真实感。
2025-09-25 19:33:11
410
原创 Pygame中实现图像旋转效果-中级
本文介绍了在Pygame中实现鼠标控制图像旋转的方法。核心原理是通过计算鼠标位置与图像中心连线的角度来确定旋转方向。具体步骤包括:1)获取鼠标位置坐标;2)计算鼠标相对图像中心的坐标差;3)使用math.atan2()函数求出旋转弧度并转换为角度;4)使用pygame.transform.rotate()进行图像旋转。文中提供了完整的代码实现,并特别说明了坐标系转换和角度/弧度转换的注意事项。该方法通过实时计算鼠标位置实现了图像的平滑跟随旋转效果。
2025-09-22 11:47:24
989
原创 Pygame中实现图像旋转效果-初级
本文介绍了使用Pygame实现图像旋转效果的方法。主要内容包括:1)导入背景和飞船图片,并对飞船进行缩放处理;2)设置飞船起始位置、旋转方向和速度参数;3)在游戏循环中实时更新飞船旋转角度,并通过transform.rotate()方法实现图片旋转;4)计算旋转后图片的显示位置,确保中心点保持不变。文中提供了完整的实现代码,展示了如何让飞船图片围绕屏幕中心持续旋转的视觉效果,并解释了关键参数的作用和实现原理。
2025-09-22 11:42:38
706
原创 GESP编程等级认证C++三级9-字符串2
本文介绍了C++中输入字符串的两种方法:cin和getline。cin在遇到空格时会停止输入,而getline可以读取包含空格的完整字符串。文章还通过代码示例展示了这两种方法的使用,并提醒使用getline时需要包含string头文件。此外,文章解析了2024年12月和6月的几道真题,涉及字符串下标越界、字符遍历及ASCII编码值的计算等内容,帮助读者理解字符串处理中的常见问题。
2025-05-23 17:10:23
809
原创 GESP编程等级认证C++三级8-字符串1
在C++中,字符串是一种基本数据类型,使用string表示。字符串变量可以通过直接赋值或使用构造函数来定义,如s1和s2均被初始化为"hello"。字符串中的单个字符可以通过下标访问,例如s1[2]将返回'l'。需要注意的是,字符串的下标范围是0到长度减1,访问超出此范围的下标会导致“越界”错误。字符串末尾隐式包含结束字符\0,访问此字符不会越界但无法打印。通过length()或size()函数可以获取字符串中字符的个数,不包括结束字符。使用for循环可以遍历字符串中的所有字符,循环变量
2025-05-23 17:08:56
618
原创 GESP编程等级认证C++三级6-字符、字符数组与字符串1
在C++中,字符和字符串是基本的数据类型,但它们在内存中的表示和存储方式有所不同。字符(char)用单引号包围,占1个字节,存储的是字符的ASCII值。字符串(string)由多个字符组成,用双引号包围,末尾隐式包含一个结束符'\0',因此其内存占用比字符多。字符数组是字符的集合,可以通过字符串进行初始化,但需注意字符串末尾的'\0'会占用一个数组元素的位置。理解这些差异对于正确处理字符和字符串操作至关重要。
2025-05-22 10:35:36
412
原创 GESP编程等级认证C++三级7-字符、字符数组与字符串2
使用字符串定义字符数组虽然需要额外考虑末尾的“\0”,但这种方法在实际应用中具有显著优势。通过字符串初始化的字符数组(如a4)能够正确打印,因为“\0”作为字符串结束标志,使得输出函数在遇到“\0”时停止。而直接初始化的字符数组(如a7)由于缺少“\0”,会导致输出函数继续打印内存中的随机数据,产生乱码。此外,使用strlen()函数获取字符数组长度时,不包含“\0”,而sizeof()则包含“\0”。这些特性在处理字符串时提供了便利和准确性,尽管看似“麻烦”,但实际应用中不可或缺。
2025-05-22 10:33:25
680
原创 GESP编程等级认证C++三级5-数组5
本文讨论了C++中数组的赋值、定义及遍历方法。首先,数组不能直接赋值,需通过for循环逐个元素赋值。其次,全局数组和局部数组在未初始化时,全局数组元素默认为0,局部数组元素值不确定。此外,for循环可用于正向或逆向遍历数组。最后,通过真题解析展示了数组操作的实际应用,包括元素赋值、条件判断及输出。这些知识点对理解和使用数组至关重要。
2025-05-21 09:49:30
632
原创 GESP编程等级认证C++三级4-数组4
本文主要探讨了数组在内存中的存储方式及其所占内存空间的计算方法。数组元素在内存中是顺序且连续存储的,因此数组的总内存空间等于其所有元素所占空间的总和。通过示例代码,展示了如何定义数组并计算其内存空间,例如一个包含6个整型元素的数组,每个整型占4字节,总内存空间为24字节。此外,文章还介绍了如何使用sizeof()函数获取数组和基本数据类型的内存大小,并基于此计算数组中的元素个数。最后,通过真题解析,进一步巩固了数组内存空间计算的相关知识。
2025-05-21 09:47:05
507
原创 GESP编程等级认证C++三级3-数组3
数组中的元素可以通过下标访问,下标表示元素在数组中的编号,范围从0到(元素个数-1)。数组在内存中是连续存储的,因此通过下标可以快速定位元素。使用下标访问时需注意不能越界,否则可能获取到错误或不确定的值。通过for循环可以遍历数组中的元素,循环变量的值必须在下标范围内。真题解析中强调了避免下标越界的重要性,并指出数组初始化时默认值为0。
2025-05-20 12:29:59
446
原创 GESP编程等级认证C++三级2-数组2
文章摘要:本文介绍了数组初始化的方法及注意事项。一般方法要求在定义数组时指定长度,并通过大括号内的元素值进行初始化,元素值的数量需与数组长度一致。扩展方法包括省略数组长度初始化、自动补零初始化和全部元素为零的初始化。省略长度时,数组长度由元素值数量决定;元素值少于长度时,未指定元素自动补零;使用空大括号可将所有元素初始化为零。文章还通过真题解析,强调了数组定义时需指定长度或元素值,且长度必须为整型。
2025-05-19 10:30:45
348
原创 GESP编程能力等级认证C++3级1-数组1
GESP(CCF编程能力等级认证)为青少年提供编程能力验证,覆盖中小学阶段,分为C++编程一至八级。C++三级知识点包括数组的定义与使用,强调数组长度必须为正整数、常量或常量表达式,不能为变量或非正数。真题解析展示了如何正确定义数组及常见错误。GESP旨在提升青少年编程素养,培养解决实际问题的能力,并为学员提供编程能力证明。
2025-05-18 19:09:44
452
原创 从零开始学Python游戏编程50-二维数组4
property 是Python的内建装饰器,用来将方法“变身”成属性。通俗一点讲,它让你能够像访问属性一样,直接调用方法,而不必写那些冗长的 getter 和 setter 方法。你可以通过 @property 来控制属性的读取、修改和删除等操作,实现更细致的权限管理。它不仅让代码看起来更简洁,还能提升代码的可读性,避免过多的重复代码。用它,像是给代码装上了魔法引擎,让你在方法和属性之间轻松穿梭,打造出更优雅、简洁的编程风格。
2025-05-07 11:36:02
78
原创 从零开始学Python游戏编程49-二维数组3
在UserInterface类中,定义显示“小背景”的方法renderGround(),如图14所示。图14 显示“小背景”的方法renderGround()的代码其中,第100行中renderGround()的position参数表示“小背景”在游戏窗口中的位置;tile参数表示使用游戏背景图片集中的哪一块“小背景”;renderGround()的实现原理与renderUnit()相同。
2025-04-30 13:13:40
464
原创 从零开始学Python游戏编程46-类的继承3
其中,第85行中函数的参数unit表示要绘制的“单位”,可以是玩家坦克也可以是防御塔,因为玩家坦克和防御塔具有相同的属性。第86行代码确定绘制的“单位”在游戏窗口中的位置;第92-94行代码绘制了“单位”的上半部内容(武器部分),第92行中的Vector2(0,6)表示上半部内容是图片集中第7行第1列的图片,如图6所示。UserInterface类的render()方法用于绘制玩家坦克和防御塔,在该方法中,调用renderUnit()来实现绘制功能,代码如图7所示。图6 “单位”的武器部分示意图。
2025-04-29 11:26:12
87
原创 从零开始学Python游戏编程44-类的继承1
其中,第22行定义了一个列表computations,该列表中包含了Computation类的实例(Sum类和Product类都是Computation类的子类)的实例。第14行中,类名Sum后圆括号中的Computation表示定义的Sum类是Computation的子类,子类Sum类继承了父类Computation的所有属性和方法,因此在Sum类中无需再定义这两个整型属性。对于Sum类和Product类来说,其相同的功能是都包含两个整型属性,不同的功能是对这两个属性的操作。图1 Sum类的代码。
2025-04-29 09:46:56
147
原创 从零开始学Python游戏编程43-列表3
通过列表,改写提到的代码。将游戏中的多个防御塔数据写入到列表中,之后在处理玩家坦克与防御谈碰撞以及显示防御塔时,使用列表可以简化代码。
2025-04-28 10:01:53
74
原创 从零开始学Python游戏编程42-列表2
其中,第9行代码中,通过enumerate()函数获取mylist中元素的下标及元素的值,通过for循环遍历所有,index表示下标,item表示值。在“1.2 访问列表中的数据”中提到,可以通过列表的下标来查看列表中的单个数据。查看列表中所有的数据,叫做“遍历列表”,可以通过for循环遍历列表,代码如图12所示。如果我们需要直到每个数据对应的下标,也就是要同时获取列表中的下标和数据时,可以通过enumerate()函数实现,代码如图14所示。通过下标可以修改列表中的数据,代码如图10所示。
2025-04-27 10:06:00
527
原创 从零开始学Python游戏编程41-列表1
在Python中,列表(list)能够用来存储和处理数据,例如可以将中提到的防御塔位置的数据放到列表中。
2025-04-27 10:04:58
366
原创 从零开始学Python游戏编程40-碰撞处理2
newTankPos可以看作是坦克“理论上”的新位置,“理论上”的新位置指的是只有某些条件满足时,坦克才会出现在新位置上,第24-26行就指定了这些条件,包括坦克的位置必须在游戏窗口范围内,并且新位置不能在两个防御塔的位置上,满足以上条件,第27行才会将坦克的位置设置为新位置,否则坦克的位置不会改变。从图2中可以看出,防御塔实际上是图4中第2行第1列的图像与第7行第1列图像的组合,绘制防御塔的代码只需要将图5中绘制完整坦克代码中相应的行列坐标改为防御塔所需的行列坐标即可,在render()方法中。
2025-04-25 17:02:46
784
原创 从零开始学Python游戏编程39-碰撞处理1
在代码的基础上,添加两个敌人的防御塔,玩家的坦克无法移动到防御塔所在的空格中,如图1所示。图1 游戏中的碰撞处理。
2025-04-25 16:59:16
430
原创 从零开始学Python游戏编程38-精灵5
第70行中定义的变量texturePoint表示要绘制的贴图在贴图集中的位置,Vector2(1,0)表示贴图位于贴图集的第1行,第2列(Vector2的第一个参数表示列数,第二个参数表示行数,都是从0开始的),其示意图如图10所示。render()方法的作用是根据tankPos在游戏窗口中绘制坦克精灵,在绘制坦克精灵时,需要确定的数据是坦克精灵所在空格的左上角横纵坐标,以及绘制要绘制的贴图在贴图集中的位置,代码如图8所示。其它部分的代码与“矩形移动”游戏中的代码相同,请参考下一节的完整代码。
2025-04-24 11:53:52
379
原创 从零开始学Python游戏编程37-精灵4
第57-58行,当玩家点了向左的箭头按键,此时将moveTankCommand中表示列数的属性x设置为-1,表示坦克向左移动1格;在UserInterface类的__init__()方法方法中,主要不同是根据图2中的空格行列数设置游戏窗口的大小,并且将移动坦克精灵的指令moveTankCommand设置为Vector2类型,代码如图5所示。update()方法的主要作用是根据移动坦克指令moveTankCommand,更新坦克精灵的所在行列数,即更新坦克精灵的位置,代码如图7所示。
2025-04-24 11:52:18
986
原创 从零开始学Python游戏编程36-精灵3
在学习了如何显示坦克精灵后,我们将《从零开始学Python游戏编程33-指令模式2》中通过指令模式实现的“矩形移动”游戏改为“坦克移动”,即通过键盘控制坦克的移动。“坦克移动”游戏的效果如图1所示。图1 “坦克移动”游戏的效果。
2025-04-24 11:50:48
694
原创 从零开始学Python游戏编程35-精灵2
还可以通过pygame.math.Vector2类的实例来表示位置,在后面的内容中会看用这种方法表示位置带来的好处,代码如图6所示。范围信息一般包括四个数据,左上角横坐标,左上角纵坐标,宽度和高度,这四个数据确定后,贴图的范围也就确定了,如图7所示。其中,rectanlge是pygame.rect.Rect类的实例,64和0分别表示贴图左上角横纵坐标,后面的两个64分别表示贴图的宽度和高度。从图7中可以看出,如果要显示贴图集中绿框范围内的贴图,只需要指定该绿框范围的四个信息即可。图7 贴图的范围信息。
2025-04-23 11:29:25
438
原创 从零开始学Python游戏编程34-精灵1
精灵(sprite)也就是精灵对象,就是游戏中的一个具有行为的元素。以超级玛丽为例,玛丽,敌人都算是一个精灵对象。
2025-04-23 11:27:29
443
基于IOAPIC重定位的 键盘监听技术及防御
2017-03-27
Windows文件系统过滤驱动开发教程(第二版)
2017-04-23
基于VS2015套接字完成端口模型源代码
2018-07-04
ddkwizard_setup_v1.2.0a及ddkward.cmd
2016-10-23
基于对话框程序的注册码快捷键粘贴功能的实现
2017-04-23
VS2008编译驱动程序的配置方法
2016-10-23
Windows7下VS2008维护模式破解工具.rar
2019-05-31
filespy源代码
2016-09-25
DirectDraw中文手册
2017-01-31
Windows Graphics Programming Win32 Gdi And Directdraw.chm
2017-01-31
黑客调试技术解密pdf
2016-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人