一、实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、博文内容
1、代码规范
模块
- 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)
类名
- 类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头
函数
- 函数名一律小写,如有多个单词,用下划线隔开
变量名
- 变量名尽量小写, 如有多个单词,用下划线隔开
常量
- 常量使用以下划线分隔的大写命名
2、程序的总体设计(附图说明模块之间的关系)
我们运用了PYGAME这个第三方库来建立这个程序,程序主要由页面,游戏演算,以及结果显示三个模块组成。
程序的运行模块如下:
其中,(1)运用pygame.draw.line()函数来绘制生命游戏所需的空格图,以此来建立游戏页面。(2)用pygame.draw.rect()函数来绘制矩形的黑色方块,以此来代表活细胞。
(3)用screen.get_at()函数来判断此时的细胞状态,若为黑则活,为白则为死,并依照生命游戏中细胞的生死规定来编写相关规则。
3、程序结对编程过程及功能实现情况
编程讨论过程:
代码如下:
import pygame
import sys
BLACK, WHITE, GRAY = (0, 0, 0), (255, 255, 255), (200, 200, 200)#定义相关颜色的rgb
pygame.init()
pygame.display.set_caption("生命游戏,按空格演化")#设置窗口标题
screen = pygame.display.set_mode((500, 500))#对程序窗口的大小进行声明
icon = pygame.image.load("1234.png")
pygame.display.set_icon(icon)#设置程序图标
def init_screen():#绘制网格对窗口初始化
screen.fill(WHITE)
for i in range(50):
pygame.draw.line(screen, GRAY, (i*10, 0), (i*10, 500))
pygame.draw.line(screen, GRAY, (0, i*10), (500, i*10))
pygame.display.update()
def kin_count(x,y):#统计细胞周围的情况
count=0
kins=[(x-10,y-10),(x-10,y),(x-10,y+10),(x,y-10),(x,y+10),(x+10,y-10),(x+10,y),(x+10,y+10)]
kins=[(x,y) for x,y in kins if 0for kin in kins:
if screen.get_at(kin)==BLACK:
count=count+1
return count
init_screen()
cells =[]#细胞集合
turn = 0
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
if event.type==pygame.MOUSEBUTTONUP:#设置鼠标事件点击出现细胞
if screen.get_at(event.pos)==WHITE:
x,y=event.pos
cellx,celly=x-x%10,y-y%10
cell=pygame.Rect(cellx,celly,10,10)
pygame.draw.rect(screen,BLACK,cell)
cells.append((cellx,celly))
pygame.display.update()
if event.type==pygame.KEYDOWN:#设置空格
if event.key==pygame.K_SPACE:#设置空格进行演化
clock=pygame.time.Clock()
clock.tick(10)
while len(cells)>0:
turn=turn+1
pygame.display.set_caption("生命游戏第%s轮" % turn)
for x in range(5,500,10):
for y in range(5,500,10):
if screen.get_at((x,y))==BLACK:
if kin_count(x,y) not in [2,3]:
cells.remove((x-5,y-5))
else:
if kin_count(x,y)==3:
cells.append((x-5,y-5))
init_screen()
for cellx,celly in cells:
cell=pygame.Rect(cellx,celly,10,10)
pygame.draw.rect(screen, BLACK, cell)
pygame.display.update()
break
运行结果:
4、项目github地址
地址为:https://github.com/400mchillbo1/pokemonmaster11
5、实验总结
这次实验,我第一次使用结伴编程的相关方法去编程,以前都是独狼一人,一个人写代码时,容易疲惫丧失耐心,很容易就被各种其他的事物吸引注意,导致效率低下,而思路断了也要很久才能再继续。二人一起编程,显然起到了监督和鼓舞的作用,效率有了很大提高。通过交流和学习,也能发现更多的问题。这次编程我们使用pygame,也是之前了解的简单的游戏引擎,心向往之,但自己从未下决心研究过,而在实验的要求下,我们一同学习了相关的知识与编程技术,发现了其中的奥妙与乐趣,可以说是非常有效和奥利给了。我希望在以后的工作中继续保持这样探索的精神和发掘新内容的好奇心。