pygame系列_draw游戏画图

说到画图,pygame提供了一些很有用的方法进行draw画图。

‘‘‘
pygame.draw.rect - draw a rectangle shape    draw a rectangle shape
pygame.draw.polygon - draw a shape with any number of sides    draw a shape with any number of sides
pygame.draw.circle - draw a circle around a point    draw a circle around a point
pygame.draw.ellipse - draw a round shape inside a rectangle    draw a round shape inside a rectangle
pygame.draw.arc - draw a partial section of an ellipse    draw a partial section of an ellipse
pygame.draw.line - draw a straight line segment    draw a straight line segment
pygame.draw.lines - draw multiple contiguous line segments    draw multiple contiguous line segments
pygame.draw.aaline - draw fine antialiased lines    draw fine antialiased lines
pygame.draw.aalines - pygame.draw.aalines(Surface, color, closed, pointlist, blend=1): return Rect
‘‘‘

1 pygame.draw.rect   #画一个矩形

下面是我做的demo

有鼠标在窗口中点击的时候,系统会自动画出一个矩形,按键盘任意键,清屏

=================================================

代码部分:

=================================================

 1 #pygame draw
 2
 3 import pygame
 4 from pygame.locals import *
 5 from sys import exit
 6 from random import *
 7
 8 __author__ = {‘name‘ : ‘Hongten‘,
 9               ‘mail‘ : ‘[email protected]‘,
10               ‘blog‘ : ‘http://www.cnblogs.com/hongten‘,
11               ‘Version‘ : ‘1.0‘}
12
13 pygame.init()
14
15 SCREEN_DEFAULT_SIZE = (500, 500)
16 SCREEN_DEFAULT_COLOR = (0, 0 ,0)
17
18 screen = pygame.display.set_mode(SCREEN_DEFAULT_SIZE, 0, 32)
19 screen.fill(SCREEN_DEFAULT_COLOR)
20
21 while 1:
22     for event in pygame.event.get():
23         if event.type ==  QUIT:
24             exit()
25         elif event.type == KEYDOWN:
26             screen.fill(SCREEN_DEFAULT_COLOR)
27         elif event.type == MOUSEBUTTONDOWN:
28             rect_color = (randint(0, 255), randint(0, 255), randint(0, 255))
29             rect_pos = (randint(0, 500), randint(0, 500))
30             rect_pos_end = (500 - randint(rect_pos[0], 500), 500 - randint(rect_pos[1], 500))
31             pygame.draw.rect(screen, rect_color, Rect(rect_pos, rect_pos_end))
32     pygame.display.update()

1 pygame.draw.circle  #画圆

demo:

当鼠标在窗口中移动的时候,单击鼠标,即可在窗口中产生一个随机圆,按下键盘任意键,清屏

==================================================

代码部分:

==================================================

 1 #pygame draw
 2
 3 import pygame
 4 from pygame.locals import *
 5 from sys import exit
 6 from random import *
 7
 8 __author__ = {‘name‘ : ‘Hongten‘,
 9               ‘mail‘ : ‘[email protected]‘,
10               ‘blog‘ : ‘http://www.cnblogs.com/hongten‘,
11               ‘Version‘ : ‘1.0‘}
12
13 pygame.init()
14
15 SCREEN_DEFAULT_SIZE = (500, 500)
16 SCREEN_DEFAULT_COLOR = (0, 0 ,0)
17
18 screen = pygame.display.set_mode(SCREEN_DEFAULT_SIZE, 0, 32)
19 screen.fill(SCREEN_DEFAULT_COLOR)
20
21 while 1:
22     for event in pygame.event.get():
23         if event.type ==  QUIT:
24             exit()
25         elif event.type == KEYDOWN:
26             screen.fill(SCREEN_DEFAULT_COLOR)
27         elif event.type == MOUSEBUTTONDOWN:
28             c_color = (randint(0, 255), randint(0, 255), randint(0, 255))
29             c_pos = (randint(0, 500), randint(0, 500))
30             c_r = randint(10, 100)
31             pygame.draw.circle(screen, c_color, c_pos, c_r)
32     pygame.display.update()

1 pygame.draw.line   #画线

demo:

鼠标在窗口中移动的时候,总是有一些线和鼠标汇聚,当鼠标被点击的时候,就会记录下此时的形状

按下键盘任意键,清屏

当然你也可以取消这个功能:

1 RECORD = False   #取消记录鼠标轨迹

==================================================

代码部分:

==================================================

 1 #pygame draw
 2
 3 import pygame
 4 from pygame.locals import *
 5 from sys import exit
 6 from random import *
 7
 8 __author__ = {‘name‘ : ‘Hongten‘,
 9               ‘mail‘ : ‘[email protected]‘,
10               ‘blog‘ : ‘http://www.cnblogs.com/hongten‘,
11               ‘Version‘ : ‘1.0‘}
12
13 pygame.init()
14
15 SCREEN_WIDTH = 500
16 SCREEN_HEIGHT = 500
17 SCREEN_DEFAULT_SIZE = (SCREEN_WIDTH, SCREEN_HEIGHT)
18 SCREEN_DEFAULT_COLOR = (0, 0 ,0)
19 #record the mouse clicked points
20 RECORD = True
21
22 screen = pygame.display.set_mode(SCREEN_DEFAULT_SIZE, 0, 32)
23 screen.fill(SCREEN_DEFAULT_COLOR)
24
25 def draw_lines(screen, line_color, points, mouse_pos):
26     for point in points:
27         pygame.draw.line(screen, line_color, point, mouse_pos)
28 ps = []
29 #you can add other points
30 points = [(0, 0), (250, 0), (500, 0),
31           (0, 250),(0, 500),(250, 500),
32           (500, 250),(500, 500)]
33
34
35 while 1:
36     for event in pygame.event.get():
37         if event.type ==  QUIT:
38             exit()
39         elif event.type == KEYDOWN:
40             screen.fill(SCREEN_DEFAULT_COLOR)
41         elif event.type == MOUSEMOTION:
42             screen.fill(SCREEN_DEFAULT_COLOR)
43             line_color = (randint(0, 255), randint(0, 255), randint(0, 255))
44             draw_lines(screen, line_color, points, pygame.mouse.get_pos())
45             #record the mouse clicked points depend on yourself
46             if not RECORD:
47                 ps = []
48             for c_p in ps:
49                 draw_lines(screen, c_p[0], points, c_p[1])
50         elif event.type == MOUSEBUTTONDOWN:
51             x, y = pygame.mouse.get_pos()
52             line_color = (randint(0, 255), randint(0, 255), randint(0, 255))
53             draw_lines(screen, line_color, points, (x, y))
54             ps.append((line_color, (x, y)))
55
56     pygame.display.update()

更多信息:http://pygame.org/docs/ref/draw.html

时间: 2024-10-15 03:37:58

pygame系列_draw游戏画图的相关文章

pygame系列_font游戏字体

在pygame游戏开发中,一个友好的UI中,漂亮的字体是少不了的 今天就给大伙带来有关pygame中字体的一些介绍说明 首先我们得判断一下我们的pygame中有没有font这个模块 1 if not pygame.font: print('Warning, fonts disabled') 如果有的话才可以进行接下来的操作:-) 我们可以这样使用pygame中的字体: 1 tork_font = pygame.font.Font('data\\font\\TORK____.ttf', 20) 当

pygame系列_游戏中的事件

先看一下我做的demo: 当玩家按下键盘上的:上,下,左,右键的时候,后台会打印出玩家所按键的数字值,而图形会随之移动 这是客观上面存在的现象. 那么啥是事件呢? 你叫我做出定义,我不知道,我只能举个例子说明,例如接下来的代码中,列出来一些关于游戏中的事件 ''' 事件 产生途径 参数 QUIT 用户按下关闭按钮 none ATIVEEVENT Pygame被激活或者隐藏 gain, state KEYDOWN 键盘被按下 unicode, key, mod KEYUP 键盘被放开 key, m

hdu ---(4517)小小明系列故事——游戏的烦恼(Dp)

小小明系列故事——游戏的烦恼 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 841    Accepted Submission(s): 296 Problem Description 小小明最近在玩一款游戏,它由n*m大小的矩阵构成,矩阵上会随机产生一些黑色的点,这些点它们可能会连在一起也可能会分开,这些点的个数没有限制,但 是每个1

pygame系列_小球完全弹性碰撞游戏

之前做了一个基于python的tkinter的小球完全碰撞游戏: 今天利用业余时间,写了一个功能要强大一些的小球完全碰撞游戏: 游戏名称: 小球完全弹性碰撞游戏规则: 1.游戏初始化的时候,有5个不同颜色的小球进行碰撞 2.玩家可以通过在窗口中单击鼠标左键进行增加小球个数 3.玩家可以通过在窗口中单击鼠标右键进行删减小球个数 4.玩家可以通过键盘的方向键:上,右键进行对小球加速 5.玩家可以通过键盘的方向键:下,左键进行对小球减速 6.玩家可以按键盘:f键实现全屏显示 7.玩家可以按键盘:Esc

pygame系列_箭刺Elephant游戏

这个游戏原名为:Chimp,我们可以到: http://www.pygame.org/docs/tut/chimp/ChimpLineByLine.html 获取到源码和详细的源码讲解 下面是我对游戏的改编: 运行效果: 当箭刺到大象的时候,大象的身体就会翻转,并且发出声音,当然没有刺到的时候,也会发出另外的声音. 在游戏中,有很多地方值得我们参考,如加载图片,声音和异常处理等 ========================================= 代码部分: ===========

pygame系列_mouse鼠标事件

pygame.mouse提供了一些方法获取鼠标设备当前的状态 ''' pygame.mouse.get_pressed - get the state of the mouse buttons get the state of the mouse buttons pygame.mouse.get_pos - get the mouse cursor position get the mouse cursor position pygame.mouse.get_rel - get the amou

HDU 4517 小小明系列故事---游戏的烦恼 (模拟题)

问题描述 : 小小明最近在玩一款游戏,它由n*m大小的矩阵构成,矩阵上会随机产生一些黑色的点,这些点它们可能会连在一起也可能会分开,这些点的个数没有限制,但是每个1*1方格中最多只可能有一个黑点产生.游戏要求玩家以最短的时间用x*y的小矩阵覆盖这个大矩阵,覆盖的要求有以下2点: 1.  x*y大小的小矩阵内必须有x*y个黑点. 2. 多个小矩阵可以重叠,但是每个小矩阵放置的位置必须是独一无二的,即不同的小矩阵内的黑点不能完全相同.例如1*2的矩阵可以横着放,也可以竖着放,这两种方法是不同的,即使

pygame系列_游戏窗口显示策略

在这篇blog中,我将给出一个demo演示: 当我们按下键盘的‘f’键的时候,演示的窗口会切换到全屏显示和默认显示两种显示模式 并且在后台我们可以看到相关的信息输出: 上面给出了一个简单的例子,当然在pygame的官方文档中有对显示策略的更权威的说明: http://www.pygame.org/docs/ref/display.html#pygame.display.set_mode ''' pygame.FULLSCREEN create a fullscreen display pygam

游戏编程系列[1]--游戏编程中RPC协议的使用

RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易.RPC采用客户机/服务器模式.请求程序就是一个客户机,而服务提供程序就是一个服务器. 首先,客户机调用进程发送一个有进程参数的调用信息到服务进