I am sorry I can not think of a better title. I am writing just a simple blackjack game using Visual Web Developer 2008 Express (using C#). The problem I am running into is that even after a card has been used, it will repeat it sometimes. I am right now in the testing stages so thankfully the code is short I am also only copying the code that actually gets touch to help out more.)

This is the Default.aspx

<script language="javascript" type="text/javascript">
// <!CDATA[

//this will be my hit button. This will get one card.
function Button1_onclick() {
WebService.thecard(oncomplete, onerror)
}

function onerror(arg) {

alert("ERROR - " + arg);
}

function oncomplete(arg) {
alert(arg);
var pathfile;
pathfile = "C" + arg + ".png";
document.getElementById('CallRequest').innerHTML = document.getElementById("playercard1").alt;

if (document.getElementById("playercard1").alt == "") {
document.getElementById("playercard1").src = pathfile;
document.getElementById("playercard1").alt = arg;
}
else if (document.getElementById("playercard2").alt == "") {
document.getElementById("playercard2").src = pathfile;
document.getElementById("playercard2").alt = arg;
}
else if (document.getElementById("playercard3").alt == "") {
document.getElementById("playercard3").src = pathfile;
document.getElementById("playercard3").alt = arg;
}
else if (document.getElementById("playercard4").alt == "") {
document.getElementById("playercard4").src = pathfile;
document.getElementById("playercard4").alt = arg;
}
else if (document.getElementById("playercard5").alt == "") {
document.getElementById("playercard5").src = pathfile;
document.getElementById("playercard5").alt = arg;
}
else if (document.getElementById("playercard6").alt == "") {
document.getElementById("playercard6").src = pathfile;
document.getElementById("playercard6").alt = arg;
}
}

//this is my reset button. This will set all cards to true when clicked and get rid of all cards on the screen
function Button2_onclick() {
WebService.reset(oncomplete1, onerror1)
}

function onerror1(arg) {
alert("ERROR - " + arg);
}

function oncomplete1(arg) {



document.getElementById("playercard1").src = "";
document.getElementById("playercard1").alt = "";
document.getElementById("playercard2").src = "";
document.getElementById("playercard2").alt = "";
document.getElementById("playercard3").src = "";
document.getElementById("playercard3").alt = "";
document.getElementById("playercard4").src = "";
document.getElementById("playercard4").alt = "";
document.getElementById("playercard5").src = "";
document.getElementById("playercard5").alt = "";
document.getElementById("playercard6").src = "";
document.getElementById("playercard6").alt = "";

}


***************************************************************************
Now this next part is the WebServices page
***************************************************************************

[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

public WebService () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

//this is when the Button1 is clicked
[WebMethod]
public int thecard() {
//setting up the varibles
bool validcard = true;
int card;
card = 0;


//gets a random number between 1 - 52
card = deal.BlackJackBrain.RandomNumber();

//checks to see if the card has been used already
validcard = deck.Deck.deckofcards(card);

//if the card is already used, get a new card
if (validcard == false)
{
thecard();
}

return card;
}

[WebMethod]
public void reset()
{
deck.Deck.resetdeck();

}
}


*************************************************************************
Here is the blackjackbrain class.
*************************************************************************

namespace deal
{
/// <summary>
/// This is everything that deals with giving the cards
/// </summary>
public class BlackJackBrain : System.Web.Services.WebService
{

//calculates a random number between 1 to 52
public static int RandomNumber()
{
Random cardnumber = new Random();
int thenumber = cardnumber.Next(52) + 1;
return thenumber;
}
}


**************************************************************************
Last is the Deck class
**************************************************************************

namespace deck
{
/// <summary>
/// This is all attributes for the deck. This will let me know
/// if we have already used the card.
/// When the game is over, I will call this again to reset the cards
/// </summary>
public class Deck : System.Web.Services.WebService
{
// this is the deck, I am using deckcards[1] - deckcards[52] only
// I am leaving the rest as buffers and simplicity
public static bool[] deckcards = new bool[53];

// this method checks if the card has been used
public static bool deckofcards(int x)
{
bool validcard = false;

//sets the status of the card to validcard
validcard = deckcards[x];

// if the card has not been used, set it to false
if (validcard == true)
{
deckcards[x] = false;
}

//returns if the card has been used or not
return validcard;
}

//this sets all cards to true, showing none have been used
public static void resetdeck()
{
int i = 0;

for (i = 0; i < 53; i++)
{
deckcards[i] = true;
}

}
}
}


Can someone please help me figure out why it would reuse a card? I am confused because I am re-writing this code to not use the AJAX Update Panel properties (My original copy that does use the AJAX update panel works perfect with this code and doesn't repeat any cards).

Thank you

Isaac_624