结对编程——黄金点游戏之旅【一】

黄金点游戏——web初体验

 一、黄金点游戏是一个数字小游戏,其游戏规则是:

  N个同学(N通常大于10),每人写一个0-100之间的有理数(不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。

 二、想法与实现过程

  看完要求后,我们决定按照要求完成一个网页小游戏。我们认为游戏应该包括账号注册、账号登陆、游戏准备、游戏开始、游戏结束、退出登录等六个部分。

  整个游戏使用JavaScript和Spring MVC框架进行编写。因为我没有前端开发的经验而且前端作业量比较大,所以前端的内容由我的队友负责,我负责后端的数据传递与处理。现在我们已经完成了游戏的注册与登陆部分,我只会一些简单的HTML静态页面设计,所以就不在这里对web页面的设计与实现部分多说了,具体的想法与细节可以参照队友的博客(会在文章的末端给出)。

  注册与登陆部分的后端实现通过controller获取玩家在账户名和密码项的输入,把获取到的用户名与表单中的数据做对比,判断是否为已注册用户。如果用户已注册,比对密码正确后进入准备阶段;如果不是弹出窗口提示用户注册。之后通过service调用数据库接口Dao,把获得的数据写入数据库。登陆与注册代码部分如下:

Controller:

import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.sau.ec.bean.User;
import com.sau.ec.service.UserService;

@Controller
@RequestMapping("/user")

public class UserController {
    
    @Autowired
    private UserService uService;
    
    @RequestMapping("/login.do")
    @ResponseBody
    //登陆
    public Map<String,Object> loginIn(String username, String passord) {
        Map<String,Object> result = new HashMap<String,Object>();
        
        User checkedUser = uService.checkUser(username, passord);
        if(checkedUser != null) {
            /*model.addAttribute("checkedUser", checkedUser);*/
            result.put("tip", "success");
            result.put("username",checkedUser.getUsername());
        } else {
            result.put("tip", "error");
        }
        
        return result;
    }
    
    @RequestMapping("/register.do")
    @ResponseBody
    //注册
    public Map<String,Object> RegisterUser(String username,String password) {

        Map<String, Object> result = new HashMap<String,Object>();
        
        boolean isSuccess = uService.register(username,password);
        
        if(isSuccess) {
            result.put("tip", "success");
        } else {
            result.put("tip", "error");
        }
        
        return result;
    }

service部分主要有两个函数:

public boolean register(String username, String password) {
        Date date = new Date();
        SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd");
        String now=df.format(date);    
        
        Map<String, Object> info = new HashMap<String,Object>();
        
        info.put("username", username);
        info.put("password", password);
        info.put("date", now);
        
        User user = uDao.selectByUserName(username);
        if (user!=null) {
            return false;
        }else {
            uDao.addUser(info);
        }
        return true;
    }

public User checkUser(String username, String password) {
        User checkedUser = null;
        
        checkedUser = uDao.selectByUserName(username);
        if(checkedUser!=null){
            if(checkedUser.getPassword()==password){
                return checkedUser;
            }
        }
        return checkedUser;
    }

DAO接口:

public interface UserDao {

    User selectByUserName(String username);

    void addUser(Map<String, Object> info);
    void addaplayer(Map<String, Object> info);
}

 三、附录

  1.结对队友(李洋洋)博客:http://www.cnblogs.com/qianfeiqianlan/

  2.结对编程——黄金点游戏之旅【二】:http://www.cnblogs.com/zbo11/p/5970756.html

  3.HTML5代码规范:http://www.html5cn.org/article-2975-1.html

 

posted @ 2016-10-14 17:02  143401010111  阅读(188)  评论(2编辑  收藏  举报