Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Issues with achieving a "Bingo" in Bingo game.
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
RazorBlade




PostPosted: Tue Nov 30, 2010 4:10 pm   Post subject: Issues with achieving a "Bingo" in Bingo game.

I'm trying to create a bingo game using Turing 4.1.1 and I have the cards, and I have the board, and I have it so it picks numbers and colours the ones that are unpicked. I have no idea how to compare the numbers on the card to check for 5 in a row horizontal, vertical or diagonal. I've thought about my code, but I just can't come to a solution.


So far I have this:

Turing:


%               %
%%%%Variables%%%%
var NR : int := 5 %Number of Rows
var NC : int := 5 %Number of Columns
var NCARDS : int := 5 %Number of Cards
var CARD : array 1 .. NCARDS, 1 .. NR, 1 .. NC of int
var RAND : int
var key : string (1)
var A : int
var B : int
var CARDFACTORforROW := 0
var CARDFACTORforCOLUMN := 0
var NUMS : array 1 .. 75 of int
var NUMBER : int
var MIN : int
var SPOT : int
var TEMP : array 1 .. NR of int
var SORTCARD : array 1 .. NCARDS, 1 .. NR, 1 .. NC of int
var Board : array 1 .. 75 of int
var Hopper : array 1 .. 75 of int
var ColourPalette : array 0 .. 1 of int
var Boardcolour : array 1 .. 75 of int
var Choice : int
var Picked : array 1 .. 75 of int
var CardColour : array 1 .. NCARDS, 1 .. NR, 1 .. NC of int
var BALLNUM : int := 0
var BINGO : boolean := false
ColourPalette (0) := brightblue
ColourPalette (1) := brightred
%%%%%%%%%%%%%%%%%
%               %

proc Init
    for i : 1 .. 75
        Board (i) := i
    end for

    for i : 1 .. 75
        Picked (i) := 0
    end for

    for i : 1 .. 75
        Boardcolour (i) := 0
    end for

    for x : 1 .. NCARDS
        for k : 1 .. 75
            NUMS (k) := 0
        end for
        for i : 1 .. NR
            for j : 1 .. NC
                loop
                    NUMBER := Rand.Int ((j - 1) * 15 + 1, j * 15)
                    exit when NUMS (NUMBER) = 0
                end loop
                CARD (x, i, j) := NUMBER
                NUMS (NUMBER) := 1
            end for
        end for
    end for

    for x : 1 .. NCARDS
        for i : 1 .. NR
            for j : 1 .. NC
                TEMP (j) := CARD (x, i, j)
                SORTCARD (x, i, j) := 0
                CardColour (x, i, j) := 0
            end for
        end for
    end for
end Init





proc Sort
    for x : 1 .. NCARDS
        for j : 1 .. NC

            for i : 1 .. NR
                TEMP (i) := CARD (x, i, j)
            end for
            for i : 1 .. NR
                MIN := 999
                for k : 1 .. NR
                    if TEMP (k) < MIN then
                        MIN := TEMP (k)
                        SPOT := k
                    end if
                end for
                TEMP (SPOT) := 999
                SORTCARD (x, i, j) := MIN
            end for
        end for
    end for
end Sort

proc PreChoose

    var Rand1 : int
    var Rand2 : int
    var HopperTemp : int

    for i : 1 .. 75
        Hopper (i) := i
    end for

    put ""
    for i : 1 .. 1000
        Rand1 := Rand.Int (1, 75)
        Rand2 := Rand.Int (1, 75)
        HopperTemp := Hopper (Rand1)
        Hopper (Rand1) := Hopper (Rand2)
        Hopper (Rand2) := HopperTemp
    end for
    put ""

end PreChoose


proc Boardproc
    for x : 1 .. NCARDS
        for i : 1 .. NR
            for j : 1 .. NC
                if Choice = SORTCARD (x, i, j) then
                    CardColour (x, i, j) := 1
                end if
            end for
        end for
    end for
end Boardproc


proc Display

    CARDFACTORforROW := 0
    CARDFACTORforCOLUMN := 0
    for x : 1 .. NCARDS
        for i : 1 .. NR
            for j : 1 .. NC
                A := i + CARDFACTORforROW
                B := (j - 1) * 3 + 1 + CARDFACTORforCOLUMN
                locate (A, B)
                colour (ColourPalette (CardColour (x, i, j)))
                put SORTCARD (x, i, j) : 2
            end for
        end for
        CARDFACTORforCOLUMN += 22
        if x = 4 or x = 8 or x = 12 then
            CARDFACTORforROW += 9
            CARDFACTORforCOLUMN -= 88
        end if
    end for
    put ""
    for i : 1 .. 75
        colour (ColourPalette (Boardcolour (i)))
        put Board (i) : 4 ..
    end for
end Display


proc Bingo

    for x : 1 .. NCARDS
        for i : 1 .. NR
            for j : 1 .. NC
                %if ... then

                BINGO := true
                % end if
            end for
        end for
    end for

end Bingo


%
%Mainline
%



Init
Sort
PreChoose
BALLNUM := 0
loop
    BALLNUM += 1

    Choice := Hopper (BALLNUM)
    Boardproc
    Boardcolour (Choice) := 1
    %Picked (Choice) := 1
    %locate (24, 30)
    %put "The number is ", Hopper (BALLNUM)

    Display
    getch (key)
    %Bingo
    exit when BINGO
end loop




The Bingo procedure is where I've started the solving of the issue but I just don't know where to go from there.
Sponsor
Sponsor
Sponsor
sponsor
RazorBlade




PostPosted: Tue Dec 07, 2010 11:16 pm   Post subject: RE:Issues with achieving a "Bingo" in Bingo game.

Still haven't found a solution. Anyone? :/
TokenHerbz




PostPosted: Wed Dec 08, 2010 4:31 am   Post subject: Re: Issues with achieving a "Bingo" in Bingo game.

well to make things easy. have your 3Darray contain a boolean to show if that "number" has been selected. if it has been, then its true.

in your code, you check to see if a pattern of those numbers (boolean) are true for a bingo.

The simplest example and test would be to start with some corners...

Now i have many suggestions to improve your game, however lets first give you an idea to make it work.

Here are some codes to add...
Turing:

%your new variable is here.  This will tell us if the numbers are selected to use to figure out a BINGO
var is_card_number_selected : array 1 .. NCARDS, 1 .. NR, 1 .. NC of boolean

                %%%Set all cards to false INSIDE proc Init..
                is_card_number_selected (x, i, j) := false

                    %%CARD NUMBERS SELECTED PUT INSIDE PROC Boardproc
                    is_card_number_selected (x, i, j) := true

proc Bingo
    for x : 1 .. NCARDS
        for i : 1 .. NR
            for j : 1 .. NC
                %%%NOW HERE we have to "CHECK" the CARDS for the card numbers to see which have been selected (is_card_number_selected = true)
                %%And use that to see if we have a BINGO, ex: line / BOX / X / FULL CARD...   We will do CORNERS for this test...
                if is_card_number_selected (x, 1, 1) = true and is_card_number_selected (x, 1, NC) = true and
                        is_card_number_selected (x, NR, 1) = true and is_card_number_selected (x, NR, NC) = true then %%these are 4 corners!
                    %%%BINGO for corners right?!?
                    BINGO := true
                    put "BINGO, CARD ", x, " WINS WITH CORNERS!"  %%NOTE:  if other cards TIE for BINGO - 1st card will display as winner
                    Input.Pause %to see the bingo  /// Easy fix this is to give you a starting ground.  If you need help with some line logic let me know
                      %%but i want to see some effort and code first :)  This is a quick fix, i'd personally of used a class :) then are fun to use!
                end if
               
                %%%Here you can use some math to check CARD LINES HORRIZONTAL/VERTICLE (unless your lazy and type them all out but my god thats so much work) //math FTW
                %%CODE FOR LINES // X // Black out // etc...  (you can even make an option for making your bingo style, which will go for only 1 win (EX 1st BLACKOUT)
            end for
        end for
    end for
end Bingo

%%Dont forget to uncomment your BINGO IN MAIN LOOP %% Test run it, and go from there :)
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 3 Posts ]
Jump to:   


Style:  
Search: