zoukankan      html  css  js  c++  java
  • 结对编程(二阶段)

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

  • 相关阅读:
    【08月20日】A股滚动市净率PB历史新低排名
    沪深300指数的跟踪基金最近1年收益排名
    基金前15大重仓股持仓股排名
    中证500指数的跟踪基金最近1年收益排名
    【08月14日】A股ROE最高排名
    【08月13日】预分红股息率最高排名
    【08月09日】北上资金持股比例排名
    最近一月研报推荐次数最多的最热股票
    JDK源码阅读-------自学笔记(二十一)(java.util.ArrayList详细版集合类)
    MyBatis-Plus 3.0.3 Sql注入器添加,即全局配置Sql注入器,sqlInjector改写
  • 原文地址:https://www.cnblogs.com/32036et/p/12637907.html
Copyright © 2011-2022 走看看