- 博客(670)
- 资源 (13)
- 收藏
- 关注
原创 Pygame中实现图片旋转
在中我们实现了一个移动的大猩猩,接下来在该程序的基础上实现大猩猩图片的旋转,也就是点击了鼠标后,大猩猩旋转一周,之后继续移动。
2023-11-27 20:42:33
952
原创 Python网络编程多线程实现异步服务端
ThreadingTCPServer类会为每个连入服务端的客户端创建一个新的线程,在每个新线程中完成对客户端的操作,因此各个客户端之间互不影响,实现了异步服务器。相关链接1 服务端的同步和异步:同步指的是必须完成一项操作之后才能继续下一项操作,比如必须接收了客户端A的数据之后才能接收客户端B的数据;而异步指的是多项操作可以同时进行,接收客户端A的数据和接收客户端B的数据可以同时进行。同步服务器可以看作是阻塞的,异步服务器可以看作是非阻塞的。
2023-11-17 10:39:34
185
原创 Python中通过socketserver库创建服务端
要创建一个服务端,必须定义socketserver库中的TCPServer类的实例,而定义该实例时需要指定请求处理(request handler)对象,该对象的定义了服务端如何处理客户端请求。BaseRequestHandler类是所有请求处理(request handler)对象类的父类。因此,需要首先定义socketserver库中BaseRequestHandler类的派生类,代码如图2所示。图2 定义socketserver库中BaseRequestHandler类的派生类。
2023-11-08 16:09:23
262
原创 Dev-C调试的基本方法2-2
在图6所示的状态下,点击单步调试(F7)会继续调试下一行,而如果想结束在函数中的调试,则点击图4③所示的跳出函数,或Ctrl+F8按键跳出f()函数,程序将会停在图5所示的第11行处。点击图4⑥所示的“添加监视”按键,接下来在弹出的“新监视表达式”窗口中输入要监视的表达式,如图11所示,点击“OK”按键。当调试程序时,程序停在如图8所示的位置处,点击图9①所示的“局部变量”,可以查看当前程序的局部变量值,如图9②所示。点击图4⑤所示的按键或者F6按键,停止调试,此时按键状态恢复到图2所示。
2023-11-03 20:35:13
411
原创 Python网络编程之数据的主机字节序与网络字节序
数据的主机字节序指的是在高位内存保存数据的高位,在低位内存保存数据的低位。在Python中套接字实现服务端和客户端3-1_棉猴的博客-CSDN博客中提到服务端监听的端口号是12345,代码为十进制的12345转换为十六进制是0x00003039,其在内存中的格式如图1①所示。图1 主机字节序与网络字节序从图1①中可以看到,左侧是内存低位,右侧为内存高位。这种把数据低位保存到内存低位,数据高位保存到内存高位的方式又叫“小头”(little-endian)。
2023-10-25 11:30:58
286
原创 Python网络编程中getsockname()和getpeername()的用法
在socket的tcp通信中,getsockname()和getpeername()函数用来获取本机和对端的IP地址和对端口号。
2023-10-23 11:27:56
159
原创 Pygame中实现图片的移动
在和中提到将鼠标设置为指定图片。接下来在该文章涉及到的代码基础之上,实现图片的移动,效果如图1所示。图1 图片移动效果从图1中可以看出,导入一个大猩猩的图片,让大猩猩图片可以在创建的屏幕上左右移动。
2023-10-19 20:54:07
290
原创 Python网络编程改良版服务端
在中提到服务端可以接收来自客户端的连接,并且创造新的套接字与客户端进行数据通信。此时的服务端只能与一个客户端进行数据通信,如果有多个客户端连接服务端,该怎么对服务端进行改良呢?
2023-10-17 11:18:49
92
原创 Python网络编程改良版客户端
在中提到,客户端可以通过connect()方法连接服务端,而连接成功的前提是服务端在必须客户端连接之前就要等待连接。
2023-10-17 10:12:27
80
原创 Python中使用IDLE调试程序
在程序代码界面中点击“F5”,运行程序,此时之前弹出的“Debug Control”窗口会被激活,如图3所示。图3①中表示当前调试位于哪行代码,“line 1”表示第1行代码;选中图3②中的“Globals”,表示显示程序中的全局变量;图3③中的按键用来控制调试步骤,“Go”表示代码执行到下一个断点,“Step”表示进入到函数中调试;“Over”表示单步执行,但是不进入到函数中;“Out”表示当在函数中调试时,跳出函数;“Quit”表示结束调试。图3 Debug Control窗口。
2023-10-13 22:02:16
462
原创 Pygame中将鼠标形状设置为图片2-2
其中,第20行代码调用pygame.mouse模块中的set_visible()方法,将其参数设置为False,表示隐藏鼠标;第24行代码使用使用pygame.sprite模块中的RenderPlain()方法将mouse加入到Group中,实际上RenderPlain()方法与Group()方法的作用相同。其中,第26行中的going是控制程序是否运行的标志,当用户点击屏幕右上角的退出按键后,根据28-30行的代码,将going设置为False,此时while循环结束,程序退出;
2023-10-12 18:53:04
516
原创 Pygame中将鼠标形状设置为图片2-1
要将鼠标的形状改为图片,需要要导入该图片。因此,首先定义导入图片的方法,代码如图2所示。图2 导入图片的代码从图中代码可以看出,导入图片的方法的名字叫做load_image(),该方法的参数name表示要导入图片的路径。第4行待用通过pygame.image模块的load()方法导入图片,该方法的返回值image是一个Surface类型的变量,表示导入的图片。此时已经成功地导入了图片,为什么还有有接下来的5-7行代码呢?如果没有这几行代码,表示鼠标的图片显示的效果如图3所示。
2023-10-12 18:49:53
634
原创 Python中的bytes类型
可以通过字符串定义bytes类型的变量,也可以通过bytes()方法定义。给单引号或者双引号加一个前缀b,表示“字节串”,代码如图1所示。图1 通过字符串定义通过bytes()方法定义的代码如图2所示,此时以二进制格式显示bytes变量。图2 通过bytes()方法定义当bytes元组中包含汉字时,无法通过“1.1 通过字符串定义”中提到的方法进行定义,如图5所示。图5 不能通过字符串加前缀方式定义汉字bytes可以使用bytes()方法定义,代码如图6所示。
2023-10-12 15:47:33
189
原创 Python中套接字实现服务端和客户端3-3
如果不能成功连接服务器,connect()方法会间隔一段时间后再次尝试连接,此时代码会阻塞等待connect()的再次尝试,当尝试了一定次数后仍无法连接服务器,则connect()方法会抛出TimeoutError,即连接超时异常。从图5可以看出,对于客户端来说,首先创建套接字,之后通过创建的套接字去连接服务端,如果连接成功,则继续通过该套接字向服务端发送数据,最后关闭套接字。通过connect()方法连接服务端,该方法的格式如下所示。客户端创建套接字的方法与服务端相同,代码如下所示。
2023-10-10 22:54:24
172
原创 Python中套接字实现服务端和客户端3-2
当创建了用于数据通信的套接字后,使用recv()方法接收来自客户端的数据,如果客户端没有发送数据,则程序会阻塞在recv()方法处,直到接收到客户端的数据,程序才会向下运行。accept()方法的返回值是一个元组,包含了新创建的套接字和连入服务端的客户端的地址信息,该地址信息包含了客户端的IP地址和端口号。其中conn表示新创建的用于数据传输的套接字,addr是一个元组,保存了连入服务端的客户端的IP地址和端口号。该方法的格式如下所示。当有客户端连接服务端时,可以看到服务端套接字的状态,如图3所示。
2023-10-10 16:19:47
50
原创 Python中的with as语句
在中提到,对于在完成文件写入之后,要通过close()方法关闭已经打开的文件,这样才能保证后续对文件操作的正确性。
2023-10-09 10:51:31
174
原创 Python中列表生成器的使用
在自定义函数中,通过关键字yield使用列表生成器,代码如图5所示。图5 通过自定义函数使用列表生成器从图中可以看出,在自定义函数f()中,使用yield返回了i的平方。调用f(),并且将返回值保存在ge2中,此时的ge2的类型为generator,即列表生成器。接下来就可以通过next()或者for循环通过列表生成器来产生相应数据了。
2023-10-07 10:09:41
91
原创 Python中使用IDLE调试程序
在程序代码界面中点击“F5”,运行程序,此时之前弹出的“Debug Control”窗口会被激活,如图3所示。图3①中表示当前调试位于哪行代码,“line 1”表示第1行代码;选中图3②中的“Globals”,表示显示程序中的全局变量;图3③中的按键用来控制调试步骤,“Go”表示代码执行到下一个断点,“Step”表示进入到函数中调试;“Over”表示单步执行,但是不进入到函数中;“Out”表示当在函数中调试时,跳出函数;“Quit”表示结束调试。图3 Debug Control窗口。
2023-10-02 20:33:18
494
原创 Pygame实现黑客帝国屏幕效果
黑客帝国的屏幕效果如图1所示。图1 黑客帝国屏幕效果实现以上功能,实际上就是在Pygame中创建两个Surface,其中一个Surface是纯黑屏背景,用来覆盖之前的屏幕,达到数字逐渐消失的效果;另一个Surface用来显示数字,达到数字下移的效果。
2023-09-30 16:44:42
162
原创 Pygame中监控鼠标动作的方法
在中提到,通过在while True循环中获取队列中事件的方法监控键盘动作。监控鼠标动作的方法与监控键盘动作的方法相同。
2023-09-28 16:44:04
667
原创 PyCharm中使用pyqt5的方法2-2
最后点击对话框中的“OK”按键,如图12③所示。在“Progam:”栏中选择右侧的文件夹按键,选择QtDesigner所在的路径,QtDesigner所在的路径位于图8③所示的路径下的“\QtDesigner\designer.exe”,如图11②所示;在PyCharm的菜单栏中选择“File->Settings”,在打开的设置对话框中的左侧选择“Tools->External Tools”(外部工具)如图10①所示,接下来选择右侧列表左上角的“+”号,如图10②所示。图13 配置好的外部工具。
2023-09-27 17:15:59
1331
原创 PyCharm中使用pyqt5的方法2-1
qt可以用来设计界面,而pyqt是将qt移植到Python上,通过python语言设计界面,目前最新的版本是qt5。在PyCharm中使用pyqt5的步骤分为下载和配置两个部分。
2023-09-27 17:10:56
615
原创 Pygame中Sprite的使用方法6-6
其中,screen表示程序的整个界面,将其绘制为白色背景;之后通过all_sprites_list.draw()绘制碰撞后剩下的方块(碰撞的方块已经在group中删除);最后显示重新绘制的内容。每次碰撞发生后,程序界面需要重新绘制,代码如下所示。以上程序的完整代码如下所示。
2023-09-24 18:59:39
104
原创 Pygame中Sprite的使用方法6-5
block_list包含了所有绿色方块的Group实例,因为在碰撞发生后,被碰撞的绿色方块要消失,因此,把spritecollide()方法的第三个参数设置为True。其中,通过pygame.mouse.get_pos()获取鼠标的当前位置,并将鼠标的横坐标pos[0]赋值给蓝色方块的x坐标player.rect.x,鼠标的纵坐标pos[1]赋值给蓝色方块的y坐标player.rect.y。蓝色方块会随着鼠标移动,当碰到绿色方块时,则当前分数加1,当碰到红色方块时,当前分数减1。
2023-09-24 18:57:05
98
原创 Pygame中Sprite的使用方法6-4
首先定义Sprite派生类Block,Block表示程序中的方块,代码如下所示。其中,Block类的__init__()方法的color参数表示方块的颜色,width和height表示方块的宽度和高度。在__init__()方法中首先调用父类也就是Sprite类的__init__()方法;之后通过pygame.Surface()方法创建方块;接下来调用fill()方法为方块填充颜色;最后通过get_rect()获取方块的位置。相关链接1 pygame.sprite.Sprite类的使用,请参考。
2023-09-24 18:53:29
115
原创 Python中转换IP地址格式的方法
IP地址一般用字符串“XXX.XXX.XXX.XXX”表示。例如,“192.168.147.1”、“127.0.0.1”等。在确定主机IP地址段时,需要将IP地址的每段转换成数字。
2023-09-22 16:07:29
296
原创 Python中获取主机名和IP地址的方法
在Python中,可以通过socket模块中gethostname()、getfqdn()和gethostbyname()方法获取本地和远程主机名和IP地址。
2023-09-20 11:21:39
517
原创 Pygame中Sprite类的使用6-3
pygame.sprite.Group类是一个容器,可以包含多个Sprite类的实例。可以对Group类中的Sprite实例进行同一的绘制和更新,使得代码得到了简化。
2023-09-19 13:09:51
148
原创 Python中异常处理4-4
抛出的异常实际上就是一个异常类或者是类的实例,因此自定义异常就是自定义异常类。代码如图2所示。图2 自定义异常类在图2中,定义了一个名为yangError的类,该类的父类是Exception,即所有异常类的父类。相关链接1 Python中类的相关知识请参考Python中类的使用1_python类使用_棉猴的博客-CSDN博客。收到抛出yangError异常的代码如图3所示。图3 手动抛出自定义异常。
2023-09-16 17:03:30
270
原创 Python中的异常处理4-3
在《Python中的异常处理4-2》中提到,except语句后面可以加上具体的异常类型。有时我们需要这个异常的其他细节,此时可以使用except...as语句。
2023-09-14 10:52:11
64
原创 Pygame中Sprite类的使用6-2
之后将z1的rect的x每次减5,表示每次循环僵尸向左侧移动5个单位,之后就是通过draw()和update()来绘制并且在新位置上显示僵尸;每绘画一次,就是一帧。tick()函数的作用是设置FPS的值,参数10表示FPS的值10,即每秒所运行的帧数不超过10次,也就是保证了while循环每秒只能循环10次。让僵尸能够动起来,也就是让僵尸从屏幕右边走到屏幕左边,此时只需要使用while循环,改变僵尸图片的x轴坐标即可,代码如下所示。之后,在while循环的内部,来设置FPS的值,代码如下所示。
2023-09-10 18:17:54
136
原创 Pygame中Sprite类的使用6-1
在Pygame中有一个名为sprite的模块,又叫做“精灵”模块。通过该模块中的Sprite类可以实现图形的绘制、移动以及碰撞检测等功能。
2023-09-10 18:14:28
237
原创 Python中的异常处理4-2
在中提到,用except可以捕获所有的异常。实际上,在程序运行的过程中,出现异常的原因有很多,比如下标超出范围、除数为0、变量未定义等。
2023-09-09 11:30:37
100
原创 Python中通过修饰符设置类属性的访问
在中提到了可以通过property()来设置访问类属性时默认调用的方法。除了使用property()外,还可以使用修饰符来达到以上目的。
2023-09-06 09:34:36
51
原创 Python中通过property设置类属性的访问
代码如下所示class A:其中,类A有一个名为name的属性,通过get_name()方法获取该属性,通过set_name()方法设置该属性。
2023-09-05 11:04:40
136
Windows7下VS2008维护模式破解工具.rar
2019-05-31
基于VS2015套接字完成端口模型源代码
2018-07-04
基于对话框程序的注册码快捷键粘贴功能的实现
2017-04-23
Windows文件系统过滤驱动开发教程(第二版)
2017-04-23
基于IOAPIC重定位的 键盘监听技术及防御
2017-03-27
Windows Graphics Programming Win32 Gdi And Directdraw.chm
2017-01-31
DirectDraw中文手册
2017-01-31
VS2008编译驱动程序的配置方法
2016-10-23
ddkwizard_setup_v1.2.0a及ddkward.cmd
2016-10-23
filespy源代码
2016-09-25
黑客调试技术解密pdf
2016-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人