Devacron.com

Γεννητρια τυχαιων αριθμων για Λοττο σε C# (Random number generator)

Ισως θα θυμαστε ενα παλαιοτερο μου post στο οποιο εδειχνα πως να παιρνουμε τυχαιους αριθμος χρησιμοποιωντας την Javascript. Σημερα θα δουμε κατι αναλογο αυτη τη φορα ομως με τη χρηση της C#. Δηλαδη οι τυχαιοι αριθμοι θα ερχονται απο τον server. Για να το καταφερουμε αυτο η κλαση Random θα μας βοηθησει. Αναλυτικα μπορειτε να διαβασετε εδω.

Για λογους ευκολιας δεν εβαλα τον κωδικα της c# σε ξεχωριστο αρχειο αλλα μεσα σε script tag στο aspx. O κωδικας εχει ως εξης:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="lotto.aspx.cs" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    public int RandomNum(Random random)
    {
        int randomNumber = random.Next(1, 50);
        return randomNumber;
    }

    protected void Button1Click(object sender, EventArgs e)
    {
        Random random = new Random();
        string numlabel = null;
        int[] numbers = new int[6];
        for (int i = 0; i < 6; i++)
        {
            int dup = RandomNum(random);
            if (numbers.Contains(dup))
            {
                i--; continue;
            }
            numbers[i] = dup;
            numlabel += Convert.ToString(numbers[i]);
            numlabel += " ";
        }
        Label1.Text = numlabel;
        refreshScript.Visible = true;
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Lotto Random Number Generator</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Table ID="Table1" runat="server" BorderStyle="Solid" BorderWidth="1px" BorderColor="#f15350" Font-Names="arial" CellPadding="5" ForeColor="#b85f63">
            <asp:TableRow ID="TableRow1" runat="server">
                <asp:TableCell ID="TableCell1" runat="server">1</asp:TableCell>
                <asp:TableCell ID="TableCell2" runat="server">2</asp:TableCell>
                <asp:TableCell ID="TableCell3" runat="server">3</asp:TableCell>
                <asp:TableCell ID="TableCell4" runat="server">4</asp:TableCell>
                <asp:TableCell ID="TableCell5" runat="server">5</asp:TableCell>
                <asp:TableCell ID="TableCell6" runat="server">6</asp:TableCell>
                <asp:TableCell ID="TableCell7" runat="server">7</asp:TableCell>
                <asp:TableCell ID="TableCell8" runat="server">8</asp:TableCell>
                <asp:TableCell ID="TableCell9" runat="server">9</asp:TableCell>
                <asp:TableCell ID="TableCell10" runat="server">10</asp:TableCell>
            </asp:TableRow>
            <asp:TableRow ID="TableRow2" runat="server">
                <asp:TableCell ID="TableCell11" runat="server">11</asp:TableCell>
                <asp:TableCell ID="TableCell12" runat="server">12</asp:TableCell>
                <asp:TableCell ID="TableCell13" runat="server">13</asp:TableCell>
                <asp:TableCell ID="TableCell14" runat="server">14</asp:TableCell>
                <asp:TableCell ID="TableCell15" runat="server">15</asp:TableCell>
                <asp:TableCell ID="TableCell16" runat="server">16</asp:TableCell>
                <asp:TableCell ID="TableCell17" runat="server">17</asp:TableCell>
                <asp:TableCell ID="TableCell18" runat="server">18</asp:TableCell>
                <asp:TableCell ID="TableCell19" runat="server">19</asp:TableCell>
                <asp:TableCell ID="TableCell20" runat="server">20</asp:TableCell>
            </asp:TableRow>
            <asp:TableRow ID="TableRow3" runat="server">
                <asp:TableCell ID="TableCell21" runat="server">21</asp:TableCell>
                <asp:TableCell ID="TableCell22" runat="server">22</asp:TableCell>
                <asp:TableCell ID="TableCell23" runat="server">23</asp:TableCell>
                <asp:TableCell ID="TableCell24" runat="server">24</asp:TableCell>
                <asp:TableCell ID="TableCell25" runat="server">25</asp:TableCell>
                <asp:TableCell ID="TableCell26" runat="server">26</asp:TableCell>
                <asp:TableCell ID="TableCell27" runat="server">27</asp:TableCell>
                <asp:TableCell ID="TableCell28" runat="server">28</asp:TableCell>
                <asp:TableCell ID="TableCell29" runat="server">29</asp:TableCell>
                <asp:TableCell ID="TableCell30" runat="server">30</asp:TableCell>
            </asp:TableRow>
            <asp:TableRow ID="TableRow4" runat="server">
                <asp:TableCell ID="TableCell31" runat="server">31</asp:TableCell>
                <asp:TableCell ID="TableCell32" runat="server">32</asp:TableCell>
                <asp:TableCell ID="TableCell33" runat="server">33</asp:TableCell>
                <asp:TableCell ID="TableCell34" runat="server">34</asp:TableCell>
                <asp:TableCell ID="TableCell35" runat="server">35</asp:TableCell>
                <asp:TableCell ID="TableCell36" runat="server">36</asp:TableCell>
                <asp:TableCell ID="TableCell37" runat="server">37</asp:TableCell>
                <asp:TableCell ID="TableCell38" runat="server">38</asp:TableCell>
                <asp:TableCell ID="TableCell39" runat="server">39</asp:TableCell>
                <asp:TableCell ID="TableCell40" runat="server">40</asp:TableCell>
            </asp:TableRow>
            <asp:TableRow ID="TableRow5" runat="server">
                <asp:TableCell ID="TableCell41" runat="server">41</asp:TableCell>
                <asp:TableCell ID="TableCell42" runat="server">42</asp:TableCell>
                <asp:TableCell ID="TableCell43" runat="server">43</asp:TableCell>
                <asp:TableCell ID="TableCell44" runat="server">44</asp:TableCell>
                <asp:TableCell ID="TableCell45" runat="server">45</asp:TableCell>
                <asp:TableCell ID="TableCell46" runat="server">46</asp:TableCell>
                <asp:TableCell ID="TableCell47" runat="server">47</asp:TableCell>
                <asp:TableCell ID="TableCell48" runat="server">48</asp:TableCell>
                <asp:TableCell ID="TableCell49" runat="server">49</asp:TableCell>
                <asp:TableCell ID="TableCell50" runat="server"></asp:TableCell>
            </asp:TableRow>
        </asp:Table>
        <div style="width: 305px;">
            <hr />
            <asp:Button ID="Button1" runat="server" Text="Generate" OnClick="Button1Click" />
            <asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
            <asp:PlaceHolder ID="refreshScript" Visible="false" runat="server">
                <script type="text/javascript">
                    var nums = $("#Label1").text();
                    var array = new Array();
                    array = nums.split(" ");
                    for (var i = 0; i < 6; i++) {
                        $("#TableCell" + array[i]).css("background-color", "lightgrey");
                    }
                </script>
            </asp:PlaceHolder>
        </div>
    </div>
    </form>
</body>
</html>

Νομιζω πως τα μονα σημεια που θα πρεπει να εξηγησω ειναι τα εξης: Το if statement μεσα στο for loop γινεται σε περιπτωση που η γεννητρια μας επιστρεψει εναν αριθμο που υπαρχει ηδη μεσα στο array μας. Αν λοιπον γινει κατι τετοιο τοτε μειωνει το i και συνεχιζει απο εκει που ειχε σταματησει. Το αλλο σημειο που ειναι ισως λιγο περιεργο ειναι αυτη η σειρα refreshScript.Visible = true; Επειδη ηθελα να εχω ενα μονο κουμπι το οποιο και θα τρεχει c# κωδικα αλλα και θα περναει μεσω jquery τα χρωματα στους αριθμους που επιλεχθηκαν εφαρμοσα την τεχνικη του να εχω ενα placeholder hidden και να το κανω visible μεσω της c#. Οταν λοιπον γινει visible εκτελειται ο javascript κωδικας που υπαρχει μεσα του. Οταν κερδισετε πιστευω δεν θα ξεχασετε το φιλαρακι που σας εδωσε τα νουμερα ε;;

Exit mobile version