结对编程(二阶段)

一、实验目标
  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学过的一些知识。总之本次实验收获颇丰,以后可以私下与朋友开展这样的编程活动。

posted @ 2020-04-05 16:54  安奕辰  阅读(163)  评论(0编辑  收藏  举报