结对编程——黄金点游戏之旅【一】
黄金点游戏——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