因為個人原因錄用了沒有去成。分享出來希望大家給予更多的指正,共同探導
程式設計
骰子遊戲
1、註冊使用者可玩該遊戲
2、使用者積分達到指定值可以玩該遊戲
3、開始遊戲時,從註冊使用者中隨機選取同層級的另一使用者PK
4、目前使用者和被選中的使用者輪流擲骰子1次為1輪遊戲
5、每次3個骰子,骰子結果隨機產生。 3個骰子相加後大的為勝,小的為負,相當為平。
6、能夠處理使用者遊戲過程中網路中斷等意外情況
7、網站後台提供介面支援,前景程式用AJAX方式實現
請撰寫該遊戲程式技術文檔,包括
1、主要資料結構
2、主要邏輯處理
3、主要功能介面
因為時間總是唯寫了一部分
一、主要資料結構
1、User(使用者)
UserId(使用者ID)
UserName(使用者名稱)
UserPWD(使用者密碼)
UserScore(使用者積分)
UserGrade(使用者等級)
IsOnline(是否線上Y/N)
IsInGame(是否在遊戲中Y/N)
Created(建立時間)
Modefied(修改時間)
Creator(建立人)
Modefier(修改人)
2、GameRecord(遊戲記錄)
GameId(遊戲編號)
User1Id(使用者1ID)
User2Id(使用者2ID)
User1TimeScore(使用者每次分數[1,3,5])
User2TimeScore(使用者每次分數)
User1TotleScore(使用者1總分數[9])
User2TotleScore(使用者2總分數)
GameResult(遊戲結果枚舉值0,1,2分別代碼平,勝,輸)
Created(建立時間)
Modefied(修改時間)
3.RandomScore(隨機數)
Int[] TimeScore(每次分數)
Int TotalScore(總分數)
二、主要邏輯處理
1.封裝一個靜態類用於擷取隨機數
GetRandomData
定義其靜態函數擷取分數
GetRandomScore()
擷取單步隨機數函數
GetRandom()
public static class GetRandomData
{
public static RandomScore GetRandomScore()
{
RandomScore rs = new RandomScore();
int[] _timeScore=new int[3];
int _totleScore = 0;
for (int i = 0; i < 3; i++)
{
_timeScore[i] = GetRandom();
_totleScore+=_timeScore[i];
}
rs.TimeScore = _timeScore;
rs.TotalScore = _totleScore;
return rs;
}
private static int _randomSeed = (int)DateTime.Now.Ticks;
private static int GetRandom()
{
if (_randomSeed == int.MaxValue)
_randomSeed = 1;
Random r = new Random(_randomSeed++);
return r.Next(1, 6);
}}
三、主要介面
AJAX擷取隨機數
伺服器端Handler
GetRandomScoreHandler
public class GetRandomScoreHandler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
RandomScore rs = GetRandomData.GetRandomScore();
Serializer serializer = new Serializer(typeof(RandomScore));
string sr = serializer.Serialize(rs);
context.Response.Write(sr);
}
public bool IsReusable {
get {
return false;
}
}
}
前台ajax頁面調用
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無標題頁</title>
<script type="text/javascript" src="../Misc/Js/Core/Jquery.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" id="User1getScore" value="User1getScore"/>
<div id="User1ScoreDisplay"></div>
<h1>VS</h1>
<input type="button" id="User2getScore" value="User2getScore"/>
<div id="User2ScoreDisplay"></div>
<div ><h1 id="ResultScore"></h1></div>
</div>
</form>
</body>
<script type="text/javascript">
$(function(){
$("#User1getScore").click(function(){
IniScore();
GetRandomScore('User1ScoreDisplay');
})
$("#User2getScore").click(function(){
GetRandomScore('User2ScoreDisplay');
GetResultScore();
})
})
function IniScore()
{
$("#User1ScoreDisplay").empty();
$("#User2ScoreDisplay").empty();
$("#ResultScore").html('');
}
function GetResultScore()
{
var user1Score=parseInt($("#User1ScoreDisplay>h3").text()) ;
var user2Score=parseInt($("#User2ScoreDisplay>h3").text()) ;
if(user1Score>user2Score)
{ $("#ResultScore").html("勝");}
else if(user1Score==user2Score)
{$("#ResultScore").html("平");}
else
{$("#ResultScore").html("敗");}
}
function GetRandomScore(domId)
{
var parms='';
$.ajax({url: "../Handlers/GetRandomScoreHandler.ashx",
type: "get",
dataType: "json",
data: parms,
async: false,
timeout: 60000,
error: function(err) {
alert(err);
// boxAlpha();
$("#score").html("伺服器忙, 請稍候重試...");
},
success: function(msg) {
var obj= eval(msg);
var _html='';var i=0
for (i=0;i<3;i++)
{_html+='<span>'+obj.TimeScore[i]+'</span>' ;}
_html+='<h3>'+obj.TotalScore+'</h3>';
$('#'+domId).html(_html);
}
});
}
</script>
</html>