结对编程(二阶段)
一、实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、实验过程
1、由于个方面原因,考虑到相互之间监督,采用屏幕分享来完成本次结对编程实验。
2、代码选择:经过双方共同商量,选择用python来完成本次实验。
3、python代码规范:
在编写代码的时候,两人经过多次角色转换,有时候会讨论很久,关于一个问题怎么去解决。
4、我们可以用一个二维矩阵来表示这样一个世界。用1表示这个细胞的状态是活着,0表示这个细胞的状态是死了。下面就是我们的初始化代码:
ground=np.zeros([x_rect,y_rect])#整条蛇占据的矩阵,0是没有。
for i in range(1,x_rect-1):
for j in range(1,y_rect-1):
if randint(1,10)<2:
ground[i][j]=1
else:
pass
所以建立一个零矩阵。然后通过两个for循环,按照一定的比例将矩阵里面部分0变成1.用到了randint函数。
然后,我们正式进入游戏的运行部分。
while True:
for i in range(1,x_rect-1):#所有细胞的生存状态发展
for j in range(1,y_rect-1):
if ground[i][j]==1:
if food_num(i,j)!=2 and food_num(i,j)!=3:
ground[i][j]=0
else:
pass
else:
if food_num(i,j)==3:
ground[i][j]=1
else:
pass
在while True中,我们判断在这一个回合中,哪一些细胞死了,哪一些细胞活了,哪一些细胞保持原样。细胞是死是活的状态由矩阵里面的0和1存储。里面判断的标准就是生命游戏的规则。
最后就是把这个打印出来。
5、运行截图
6、上传仓库
仓库地址:https://github.com/cyszz/my-travel-plans.git
7、实验源码
import pygame
import sys
from pygame.locals import*
import numpy as np
from random import randint
pygame.init()
rect_width=10
size=width,height=800,500
COLOR=(100,67,3)#蛇的颜色
x_rect=int(width/rect_width)
y_rect=int(height/rect_width)#长宽格子有多个
bg=(100,180,180)
screen=pygame.display.set_mode(size)
pygame.display.set_caption("python趣味爱好者")
ground=np.zeros([x_rect,y_rect])#整条蛇占据的矩阵,0是没有。
for i in range(1,x_rect-1):
for j in range(1,y_rect-1):
if randint(1,10)<2:
ground[i][j]=1
else:
pass
def get_rect(row,column):#计算应该在哪里画方格,以右上角为点。
x1=rect_width*row
y1=rect_width*column
return (x1,y1,rect_width,rect_width)
#pygame.draw.rect(screen,COLOR,get_rect(row,column),0)
def food_num(x,y):#为了避免出现ground[-1][-1]的情况,我们需要从1开始
num=0
neighbour=[ground[x][y-1],ground[x][y+1],ground[x-1][y],ground[x+1][y]\
,ground[x-1][y-1],ground[x+1][y-1],ground[x-1][y+1],ground[x+1][y+1]]
return sum(neighbour)
def draw_food(x,y):
pygame.draw.rect(screen,COLOR,get_rect(x,y),0)
while True:
for i in range(1,x_rect-1):#所有细胞的生存状态发展
for j in range(1,y_rect-1):
if ground[i][j]==1:
if food_num(i,j)!=2 and food_num(i,j)!=3:
ground[i][j]=0
else:
pass
else:
if food_num(i,j)==3:
ground[i][j]=1
else:
pass
#下面是画出所有的细胞
screen.fill(bg)#填充背景颜色
for i in range(1,x_rect-1):#所有细胞的生存状态发展
for j in range(1,y_rect-1):
if ground[i][j]==1:
draw_food(i,j)
else:
pass
pygame.display.flip()
pygame.time.delay(80)
四、实验小结
这次实验不同于以往的一些实验,第一次以两人一组的方式来完成一个实验,对我们以后的学习都有很大的帮助。开始工作前我和队友其实对结对的了解都不太深刻,觉得就各写各的、有问题交流一下,最后合并一下就可以了。但是最后让我认识到一个人还是不足以完善。而且也让我复习了python学过的一些知识。总之本次实验收获颇丰,以后可以私下与朋友开展这样的编程活动。