上次面試的時候公司給的一份差不多筆試題,分享出來大家看看

來源:互聯網
上載者:User

因為個人原因錄用了沒有去成。分享出來希望大家給予更多的指正,共同探導

 

程式設計

 

骰子遊戲

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>

 

 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.