一, 实验目标
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, 实验总结
相对于自己编程, 结对编程效率与对程序的多方了解提升了很多, 通过与队友协作编程, 很多在编程过程中遇到的问题也变得很轻松就可以解决. 编程中, 拥有一个拍档可以多一个视角去看待问题, 所谓三个臭皮匠顶个诸葛亮. 结对编程可以把几个人的优点融合到一起, 把个人的缺点, 通过集体来发现并改正. 总而言之, 本次实验是一次重要的经历, 让人收获颇丰.
来源: http://www.bubuko.com/infodetail-3493435.html