结对编程阶段二
一、实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、博文内容
1、代码规范
模块
- 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)
类名
- 类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头
函数
- 函数名一律小写,如有多个单词,用下划线隔开
变量名
- 变量名尽量小写, 如有多个单词,用下划线隔开
常量
- 常量使用以下划线分隔的大写命名
2、程序的总体设计(附图说明模块之间的关系)
我们运用了PYGAME这个库来建立这个程序,程序主要由页面,游戏演算,以及结果显示三个模块组成。
这三个模块再在程序中相互作用的情况如下
3、程序结对编程过程(附图)及功能实现情况(附代码和图)
部分讨论过程:
程序:
import pygame
import sys
BLACK, WHITE, GRAY = (0, 0, 0), (255, 255, 255), (200, 200, 200)
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 0<x<500 and 0<y<500]
for kin in kins:
if screen.get_at(kin)==BLACK:
count=count+1
return count
init_screen()
cells =[]
turn=1
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:
pygame.display.set_caption("生命游戏第%s轮" % turn)
turn=turn+1
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、实验总结
相对于自己编程,结对编程效率与对程序的多方了解提升了很多,通过与队友协作编程,很多在编程过程中遇到的问题也变得很轻松就可以解决。编程中,拥有一个拍档可以多一个视角去看待问题,所谓三个臭皮匠顶个诸葛亮。结对编程可以把几个人的优点融合到一起,把个人的缺点,通过集体来发现并改正。总而言之,本次实验是一次重要的经历,让人收获颇丰。