zoukankan      html  css  js  c++  java
  • 第二次结对编程作业

    本人博客
    队友博客

    分工

    蒋梦迪:UI,博客
    王德钊:AI,网络接口

    PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 30 30
    · Estimate · 估计这个任务需要多少时间 30 30
    Development 开发 930 1110
    · Analysis · 需求分析
    (包括学习新技术)
    240 300
    · Design Spec · 生成设计文档 90 90
    · Design Review · 设计复审 30 40
    · Coding Standard · 代码规范
    (为目前的开发制定合适的规范)
    30 20
    · Design · 具体设计 90 60
    · Coding · 具体编码 360 480
    · Code Review · 代码复审 30 30
    · Test · 测试
    (自我测试,修改代码,提交修改)
    60 90
    Reporting 报告 90 95
    · Test Repor · 测试报告 60 60
    · Size Measurement · 计算工作量 10 5
    · Postmortem &
    Process Improvement Plan
    事后总结, 并提出过程改进计划 20 30
    -- 合计 1050 1235

    解题思路

    原本是打算用python或者其他语言实现,但是都没用过,重头学有点慢,所以想着用Unity3D来做,因为之前用过,而且UI和代码的对接比较方便。

    算法的话,最简单的就是列举所有情况,用贪心算法暴力搜索。但是肯定不能止步于此,这样的话只保证后墩最大,中墩前墩其次,但是可能中前墩过小,赢不了牌,综合分数低。经过一番查询,觉得设置权重的方法比较靠谱。把每种牌型设置一个权重,然后综合考虑三墩,用权重和最大的一组牌作为最终结果。

    网络接口

    程序用Unity3D编写,使用U3D自带的UnityWebRequest类实现网络接口的调用。此类有GetPost方法,实现HTTP请求。举例如下:

    //Get方法
    using UnityEngine;
    using UnityEngine.Networking;
    using System.Collections;
    
    public class Example : MonoBehaviour
    {
        void Start()
        {
            //示例正确地址
            StartCoroutine(GetRequest("https://www.example.com"));
    
            //错误地址(测试用)
            StartCoroutine(GetRequest("https://error.html"));
        }
    
        IEnumerator GetRequest(string uri)
        {
            using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
            {
                //发送请求
                yield return webRequest.SendWebRequest();
    
                string[] pages = uri.Split('/');
                int page = pages.Length - 1;
    
                if (webRequest.isNetworkError)
                { //发出错误提示
                    Debug.Log(pages[page] + ": Error: " + webRequest.error);
                }
                else
                { //输出收到的信息
                    Debug.Log(pages[page] + ":
    Received: " + webRequest.downloadHandler.text);
                }
            }
        }
    }
    
    //Post方法
    using UnityEngine;
    using UnityEngine.Networking;
    using System.Collections;
    
    public class MyBehavior : MonoBehaviour
    {
        void Start()
        {
            StartCoroutine(Upload());
        }
    
        IEnumerator Upload()
        {
            WWWForm form = new WWWForm();
            form.AddField("myField", "myData");
    
            using (UnityWebRequest www = UnityWebRequest.Post("http://www.my-server.com/myform", form))
            {
                yield return www.SendWebRequest();
    
                if (www.isNetworkError || www.isHttpError)
                {
                    Debug.Log(www.error);
                }
                else
                {
                    Debug.Log("Form upload complete!");
                }
            }
        }
    }
    

    代码实现

    待补充,还没有做出成品(哭了...)

    遇到的困难

    1. 没用过HTTP请求
      • 百度了相关知识,查了python、java、以及Unity的各种实现,最后决定用Unity写
      • 已解决
      • 基本了解了HTTP请求的过程
    2. 算法细节逻辑不清楚
      • 查询网络上的牌类游戏的算法,来类比福建十三水,找灵感
      • 基本解决
      • 对写算法的逻辑更加清晰

    评价队友

    值得学习的地方

    改进的地方

    学习进度条

    第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
    第1周 0 0 5 5 没做多少工作,主要在学习新知识,比如怎么调用API,以及对算法的思考
    第2周 200 200 7 12 学习Unity3D的UnityWebRequest类如何使用,以及Unity打包Web端的方法
    第3周 400 600 6 18 学习UI的布局,算法的实现
  • 相关阅读:
    learning scala view collection
    scala
    learning scala dependency injection
    learning scala implicit class
    learning scala type alise
    learning scala PartialFunction
    learning scala Function Recursive Tail Call
    learning scala Function Composition andThen
    System.Threading.Interlocked.CompareChange使用
    System.Threading.Monitor的使用
  • 原文地址:https://www.cnblogs.com/whitefather/p/11768717.html
Copyright © 2011-2022 走看看