pygame 练习之 PIE game (以及简单图形训练)

简单的大饼游戏,掌握pygame中直线以及圆弧的画法,以及对输入的响应。

 1 import math
 2 import pygame, sys
 3 from pygame.locals import *
 4 pygame.init()
 5 screen = pygame.display.set_mode((600, 500))
 6 pygame.display.set_caption("The Pie Game -- Press 1 2 3 4")
 7 myfont = pygame.font.Font(None, 60)
 8
 9 color = 200, 80, 60
10 width = 5
11 x = 300
12 y = 250
13 radius = 200
14 position = x - radius, y - radius, radius*2,  radius*2
15
16 piece1 = False
17 piece2 = False
18 piece3 = False
19 piece4 = False
20
21 # main game loop
22 while True:
23     for event in pygame.event.get():
24         if event.type == pygame.QUIT:
25             pygame.quit()
26             sys.exit()
27         elif event.type == KEYUP:
28             if event.key == pygame.K_ESCAPE:
29                 pygame.quit()
30                 sys.exit()
31             elif event.key == pygame.K_1:
32                 piece1 = True
33             elif event.key == pygame.K_2:
34                 piece2 = True
35             elif event.key == pygame.K_3:
36                 piece3 = True
37             elif event.key == pygame.K_4:
38                 piece4 = True
39     #clear the screen
40     screen.fill((0,0,200))
41
42     textImg1 = myfont.render("1", True, color)
43     screen.blit(textImg1, (x+radius/2, y-radius/2))
44
45     textImg2 = myfont.render("2", True, color)
46     screen.blit(textImg2, (x-radius/2, y-radius/2))
47
48     textImg3 = myfont.render("3", True, color)
49     screen.blit(textImg3, (x-radius/2, y+radius/2))
50
51     textImg4 = myfont.render("4", True, color)
52     screen.blit(textImg4, (x+radius/2, y+radius/2))
53
54     #should the pieces be drawn?
55     if piece1:
56         start_angle = math.radians(0)
57         end_angle   = math.radians(90)
58         pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
59         pygame.draw.line(screen, color, (x, y), (x, y-radius), width)
60         pygame.draw.line(screen, color, (x, y), (x+radius, y), width)
61
62     if piece2:
63         start_angle = math.radians(90)
64         end_angle   = math.radians(180)
65         pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
66         pygame.draw.line(screen, color, (x, y), (x, y-radius), width)
67         pygame.draw.line(screen, color, (x, y), (x-radius, y), width)
68
69     if piece3:
70         start_angle = math.radians(180)
71         end_angle   = math.radians(270)
72         pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
73         pygame.draw.line(screen, color, (x, y), (x-radius, y), width)
74         pygame.draw.line(screen, color, (x, y), (x, y+radius), width)
75
76     if piece4:
77         start_angle = math.radians(270)
78         end_angle   = math.radians(360)
79         pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
80         pygame.draw.line(screen, color, (x, y), (x, y+radius), width)
81         pygame.draw.line(screen, color, (x, y), (x+radius, y), width)
82
83     #finished?
84     if piece1 and piece2 and piece3 and piece4:
85         color = 0, 255, 0
86
87     pygame.display.update()

效果图:

绘制椭圆:

时间: 05-03

pygame 练习之 PIE game (以及简单图形训练)的相关文章

Quartz 2D绘制简单图形

在Quartz 2D中,绘图是通过图形上下文进行绘制的,以下绘制几个简单的图形 首先先创建一个QuartzView.swift文件继承自UIView,然后实现drawRect方法: import UIKit class QuartzView: UIView { // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance duri

第05周实验:简单图形用户界面设计

什么是 GUI GUI 是 Graphical User Interface(图形用户界面)的缩写.在 GUI 中,并不只是键入文本和返回文本,用户可以看到窗口.按钮.文本框等图形,而且可以用鼠标点击,还可以通过键盘键入. 第一个 GUI 代码清单 6-1 小GUI程序“Hello,world” 运行程序,你会看到下面的界面(可能会有点慢) OK,我们利用下表来逐行解释代码清单 6-1的内容: app = wx.App() 每一个wxPython应用程序都是一个 wx.App实例 . wx.Fr

用CSS绘制简单图形

这里有篇文章, https://css-tricks.com/examples/ShapesOfCSS/  ,介绍了如何用只用1个元素和CSS规则绘制各种常见的图形: 从简单的矩形.三角形到复杂的月亮.放大镜甚至是太极图.  这种绘图方式主要用到了两类技巧: 一是使用伪元素, 二是设置图形的边框.特别是边框的使用,非常巧妙.从这些例子中可以发现:当元素的宽.高设置为0时,浏览器仍然会渲染元素的边框(即便box-sizing设置为了border-box,这时实际的宽/高会是边框的厚度之和),巧妙设

PHP 对象 多态性 简单图形计算器 高洛峰 细说PHP

主程序页面 test.php页面 <!DOCTYPE html> <html> <head>     <title>简单的图形计算器</title>     <meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" /> </head> <body>     <center>  

40 个用css 绘制出来的简单图形

http://www.codeceo.com/article/40-css-shapes.html 个人觉得svg 应该是更强大些,不过css 是比较简单的应该. Talk Bubble(聊天框) 这个是我比较感兴趣的.

鼠标绘制简单图形

功能: 1.绘制的图形包括直线.椭圆和矩形,通过菜单对绘制的图形切换 2.在视图中使用鼠标动态的绘制图形 分析: 当窗口尺寸发生变化时,引起窗口重绘,会发送WM_PAINT消息,这时首先会擦除窗口的背景,然后再进行重绘操作,这样就把窗口中先前绘制的图形擦除掉了:可以将绘制图形的三要素(起点.终点.绘制类型)保存下来,在窗口重绘调用程序视图类窗口的OnDraw函数中再将图形根据保存的三要素重新输出: 1.数据 在视图中添加两个点坐标 CPoint m_ptOrigin;  //起点坐标 CPoin

html5——canva 绘图1简单图形

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> body{background: #131115;} #c1{background: #fbf7fe;} </style> <script> window.onload=f

利用Microsoft VC++6.0 的MFC 的绘图工具实现简单图形的绘制

MFC运算功能强大,拥有完备的绘图功能. 在Windows平台上,应用程序的图形设备接口(graphics device interface,GDI)被抽象为设备上下文(Device Context,DC). 在微软基类库MFC中,CDC类是定义设备上下文对象的基类,所有绘图函数都在CDC基类中定义.当需要输出文字或图形时,就需要调用CDC类的成员函数,这些成员函数具备输出文本.绘制图形的功能. 本文讲解的例程全部在TestView.cpp文件的void CTestView::OnDraw(CD

Bar 3D 和Pie 3D的统计图形

最近在做一个关于图形统计的界面,主要用到的是Dev控件ChartControl(功能很强大,能解决基本和复杂图形统计问题). ChartControl主要有Diagram.Series.Legend三个重要属性 diagram主要是用来控制图形X.Y.Z轴显示的样式和是否允许旋转以及旋转的角度和绕那个轴旋转. series主要是用来给chartcontrol控件增加各种图形,图形的种类用viewtype来控制. legend主要是用来说明图形的分类(可以说是图例). 第一部分是以饼状图来分类显示