Samples Gallery & Reference > Games

Rock Paper Scissors (Lizard Spock) Game by TempodiBasic

(1/1)

Qwerkey:
[Inform] Rock Paper Scissors (Lizard Spock) Game

Author: @TempodiBasic - Developed on the suggestion of Pete & Bplus
Source: qb64.org Forum
URL: https://www.qb64.org/forum/index.php?topic=682.0
Version: 2
Tags: [InForm], [Game of Chance]

Description:
The Inform version of Rock Paper Scissor (Lizard Spock variant). Building it in Inform has been interesting to re-think some ideas under the light of event-driven coding.

Source Code:
Code given here for reference.  You will need all the files in the zip/rar.

--- Code: QB64: ---': This program uses': InForm - GUI library for QB64 - Beta version 7': Fellippe Heitor, 2016-2018 - fellippe@qb64.org - [member=2]FellippeHeitor[/member]': https://github.com/FellippeHeitor/InForm'----------------------------------------------------------- ': Controls' IDs: ------------------------------------------------------------------REM NOTICE: THIS FORM HAS BEEN RECENTLY EDITED'>> The controls in the list below may have been added or renamed,'>> and previously existing controls may have been deleted since'>> this program's structure was first generated.'>> Make sure to check your code in the events SUBs so that'>> you can take your recent edits into consideration.': --------------------------------------------------------------------------------- CONST paper = 1, rock = 2, scissor = 3, spok = 4, lizard = 5, draws = 2, looses = 3, wins = 1DIM SHARED PlayerChoose AS INTEGER ' flag for user choiceDIM SHARED RockHandScissor AS LONGDIM SHARED Frame1 AS LONGDIM SHARED Frame2 AS LONGDIM SHARED ScoreLB AS LONGDIM SHARED StartBT AS LONGDIM SHARED ExitBT AS LONGDIM SHARED HelpBT AS LONGDIM SHARED LB AS LONGDIM SHARED ROCKPAPERSCISSORGAMELB AS LONGDIM SHARED ChooseYourMoveAndWaitAIsOneLB AS LONGDIM SHARED assetscartajpegPX AS LONGDIM SHARED assetssassojpegPX AS LONGDIM SHARED assetsforbicepngPX AS LONGDIM SHARED assetsRPSLS_helpjpgPX AS LONGDIM SHARED assetsspokpngPX AS LONGDIM SHARED assetslizardpngPX AS LONG  '$INCLUDE:'InForm\InForm.ui''$INCLUDE:'InForm\xp.uitheme''$INCLUDE:'RockHandScissor.frm' ': Event procedures: ---------------------------------------------------------------SUB __UI_BeforeInit END SUB SUB __UI_OnLoad    _SCREENMOVE _MIDDLE    Caption(LB) = "0000"    PlayerChoose = 0    RANDOMIZE TIMER    Control(ChooseYourMoveAndWaitAIsOneLB).Hidden = True ' hide help label    Control(ChooseYourMoveAndWaitAIsOneLB).Disabled = True    Control(Frame2).Hidden = True ' hide frame2    Control(Frame2).Disabled = TrueEND SUB SUB __UI_BeforeUpdateDisplay    'This event occurs at approximately 30 frames per second.    'You can change the update frequency by calling SetFrameRate DesiredRate%      IF PlayerChoose = 20 THEN ' wait 2 sec        in! = TIMER        DO WHILE TIMER - in! < 2        LOOP        restoreGame    END IF    IF PlayerChoose THEN PlayerChoose = PlayerChoose + 1 ' here we pass one time(20 frames) into sub_Display before to reset the gameEND SUB SUB __UI_BeforeUnload    'If you set __UI_UnloadSignal = False here you can    'cancel the user's request to close. END SUB SUB __UI_Click (id AS LONG)    SELECT CASE id        CASE assetscartajpegPX            ' user chooses to play paper            Control(assetssassojpegPX).Disabled = True ' hide images of rock and scissor            Control(assetsforbicepngPX).Disabled = True            Control(assetsspokpngPX).Disabled = True            Control(assetslizardpngPX).Disabled = True            Control(assetssassojpegPX).Hidden = True            Control(assetsforbicepngPX).Hidden = True            Control(assetsspokpngPX).Hidden = True            Control(assetslizardpngPX).Hidden = True            Control(assetsRPSLS_helpjpgPX).Disabled = True ' hide AI's choice            Control(assetsRPSLS_helpjpgPX).Hidden = True            playAI paper        CASE assetssassojpegPX            ' user chooses to play rock            Control(assetscartajpegPX).Disabled = True ' hide paper and scissor            Control(assetsforbicepngPX).Disabled = True            Control(assetsspokpngPX).Disabled = True            Control(assetslizardpngPX).Disabled = True            Control(assetsspokpngPX).Hidden = True            Control(assetslizardpngPX).Hidden = True            Control(assetscartajpegPX).Hidden = True            Control(assetsforbicepngPX).Hidden = True            Control(assetsRPSLS_helpjpgPX).Disabled = True ' hide AI's choice            Control(assetsRPSLS_helpjpgPX).Hidden = True            playAI rock        CASE assetsforbicepngPX            'user chooses to play scissor            Control(assetssassojpegPX).Disabled = True ' hide  rock and paper            Control(assetscartajpegPX).Disabled = True            Control(assetsspokpngPX).Disabled = True            Control(assetslizardpngPX).Disabled = True            Control(assetsspokpngPX).Hidden = True            Control(assetslizardpngPX).Hidden = True            Control(assetssassojpegPX).Hidden = True            Control(assetscartajpegPX).Hidden = True            Control(assetsRPSLS_helpjpgPX).Disabled = True ' hide AI's choice            Control(assetsRPSLS_helpjpgPX).Hidden = True            playAI scissor        CASE assetsspokpngPX            Control(assetssassojpegPX).Disabled = True ' hide  rock and paper            Control(assetscartajpegPX).Disabled = True            Control(assetsforbicepngPX).Disabled = True            Control(assetslizardpngPX).Disabled = True            Control(assetsforbicepngPX).Hidden = True            Control(assetslizardpngPX).Hidden = True            Control(assetssassojpegPX).Hidden = True            Control(assetscartajpegPX).Hidden = True            playAI spok        CASE assetslizardpngPX            Control(assetssassojpegPX).Disabled = True ' hide  rock and paper            Control(assetscartajpegPX).Disabled = True            Control(assetsspokpngPX).Disabled = True            Control(assetsforbicepngPX).Disabled = True            Control(assetsspokpngPX).Hidden = True            Control(assetsforbicepngPX).Hidden = True            Control(assetssassojpegPX).Hidden = True            Control(assetscartajpegPX).Hidden = True            playAI lizard        CASE RockHandScissor         CASE ScoreLB         CASE Frame1         CASE StartBT            Control(HelpBT).Disabled = True            Control(Frame2).Hidden = False ' show frame2            Control(Frame2).Disabled = False            Control(assetssassojpegPX).Disabled = False ' show and activate 3 image buttons for user            Control(assetsforbicepngPX).Disabled = False            Control(assetscartajpegPX).Disabled = False            Control(assetsspokpngPX).Disabled = False            Control(assetslizardpngPX).Disabled = False            Control(assetssassojpegPX).Hidden = False            Control(assetsforbicepngPX).Hidden = False            Control(assetscartajpegPX).Hidden = False            Control(assetsspokpngPX).Hidden = False            Control(assetslizardpngPX).Hidden = False             Control(assetsRPSLS_helpjpgPX).Hidden = True ' hide help/AI image            Control(assetsRPSLS_helpjpgPX).Disabled = True            Control(ChooseYourMoveAndWaitAIsOneLB).Hidden = True ' hide help label            Control(ChooseYourMoveAndWaitAIsOneLB).Disabled = True         CASE ExitBT            SYSTEM ' exit from program        CASE HelpBT             IF Control(ChooseYourMoveAndWaitAIsOneLB).Disabled = False THEN                ' here we reactivate the game                Control(StartBT).Disabled = False                Control(ChooseYourMoveAndWaitAIsOneLB).Hidden = True ' hide help label                Control(ChooseYourMoveAndWaitAIsOneLB).Disabled = True                Caption(ChooseYourMoveAndWaitAIsOneLB) = "Choose your move and wait AI's one"                Control(Frame2).Hidden = True ' hide frame2                Control(Frame2).Disabled = True                Control(assetssassojpegPX).Disabled = False ' activate 5 image button for user                Control(assetsforbicepngPX).Disabled = False                Control(assetscartajpegPX).Disabled = False                Control(assetsspokpngPX).Disabled = False                Control(assetslizardpngPX).Disabled = False                Control(assetssassojpegPX).Hidden = False                Control(assetsforbicepngPX).Hidden = False                Control(assetscartajpegPX).Hidden = False                Control(assetsspokpngPX).Hidden = False                Control(assetslizardpngPX).Hidden = False             ELSE                ' here we show the help                Control(StartBT).Disabled = True 'disable help button                Caption(ChooseYourMoveAndWaitAIsOneLB) = "Choose your move and wait AI's one"                Control(ChooseYourMoveAndWaitAIsOneLB).Hidden = False ' show help label                Control(ChooseYourMoveAndWaitAIsOneLB).Disabled = False                Control(assetssassojpegPX).Disabled = True ' hide 5 image button for user                Control(assetsforbicepngPX).Disabled = True                Control(assetscartajpegPX).Disabled = True                Control(assetsspokpngPX).Disabled = True                Control(assetslizardpngPX).Disabled = True                Control(assetssassojpegPX).Hidden = True                Control(assetsforbicepngPX).Hidden = True                Control(assetscartajpegPX).Hidden = True                Control(assetsspokpngPX).Hidden = True                Control(assetslizardpngPX).Hidden = True                Control(Frame2).Hidden = False 'show frame2                Control(Frame2).Disabled = False                LoadImage Control(assetsRPSLS_helpjpgPX), "assets\RPSLS_help.jpg" ' load and show help picture                Control(assetsRPSLS_helpjpgPX).Redraw = True            END IF        CASE LB         CASE ROCKHANDSCISSORGAMELB         CASE ChooseYourMoveAndWaitAIsOneLB     END SELECTEND SUB SUB restoreGame    Control(assetssassojpegPX).Disabled = False 'activate 5 image buttons for user    Control(assetsforbicepngPX).Disabled = False    Control(assetscartajpegPX).Disabled = False    Control(assetsspokpngPX).Disabled = False    Control(assetslizardpngPX).Disabled = False    Control(assetsspokpngPX).Hidden = False    Control(assetslizardpngPX).Hidden = False    Control(assetssassojpegPX).Hidden = False    Control(assetsforbicepngPX).Hidden = False    Control(assetscartajpegPX).Hidden = False    Control(HelpBT).Disabled = False ' activate help button    Control(assetsRPSLS_helpjpgPX).Redraw = True ' force to show AI's choice    PlayerChoose = 0 ' reset the chooser gameEND SUB SUB results (result AS INTEGER)    'here there is the output sound + images for user    ' and adjourn  score of game    Control(assetsRPSLS_helpjpgPX).Hidden = False ' show image of ai's choice    Control(assetsRPSLS_helpjpgPX).Disabled = False    Control(assetsRPSLS_helpjpgPX).Redraw = True ' force to show image of ai's choice    SELECT CASE result        CASE wins            Caption(LB) = STR$(VAL(Caption(LB)) + 10)            Caption(ChooseYourMoveAndWaitAIsOneLB) = " YOU WIN!! "        CASE draws            Caption(LB) = STR$(VAL(Caption(LB)) + 5)            Caption(ChooseYourMoveAndWaitAIsOneLB) = " YOU DRAW!! "        CASE looses            Caption(LB) = STR$(VAL(Caption(LB)) - 10)            Caption(ChooseYourMoveAndWaitAIsOneLB) = " YOU LOOSE!! "    END SELECT    Control(ChooseYourMoveAndWaitAIsOneLB).Hidden = False 'show result as text in helplabel    Control(ChooseYourMoveAndWaitAIsOneLB).Disabled = FalseEND SUB SUB playAI (choose AS INTEGER)    PlayerChoose = 1 ' the user has made his choice    DIM choosen AS INTEGER    choosen = INT(RND * 5) + 1 ' ai chooses    Control(ChooseYourMoveAndWaitAIsOneLB).Hidden = True ' hide help label    Control(ChooseYourMoveAndWaitAIsOneLB).Disabled = True    LoadImage Control(assetsRPSLS_helpjpgPX), "" ' reset to null image of ai's choice     SELECT CASE choosen        CASE paper            ' AI chooses to play paper            LoadImage Control(assetsRPSLS_helpjpgPX), "assets\carta.jpg"            SELECT CASE choose                CASE paper                    'draw                    results draws                CASE rock                    ' failure                    results looses                CASE scissor                    ' victory                    results wins                CASE spok                    ' failure                    results looses                CASE lizard                    ' victory                    results wins            END SELECT         CASE rock            ' AI chooses to play rock            LoadImage Control(assetsRPSLS_helpjpgPX), "assets\sasso.jpg"            SELECT CASE choose                CASE paper                    'victory                    results wins                CASE rock                    ' draw                    results draws                CASE scissor                    ' loose                    results looses                CASE spok                    'victory                    results wins                CASE lizard                    ' loose                    results looses            END SELECT         CASE scissor            ' AI chooses to play scissor            LoadImage Control(assetsRPSLS_helpjpgPX), "assets\forbice.png"            SELECT CASE choose                CASE paper                    'failure                    results looses                CASE rock                    ' victory                    results wins                CASE scissor                    ' draw                    results draws                CASE spok                    ' victory                    results wins                CASE lizard                    'failure                    results looses            END SELECT        CASE spok            ' AI chooses to play spok            LoadImage Control(assetsRPSLS_helpjpgPX), "assets\Spok.png"            SELECT CASE choose                CASE paper                    ' victory                    results wins                CASE rock                    'failure                    results looses                CASE scissor                    'failure                    results looses                CASE spok                    ' draw                    results draws                CASE lizard                    ' victory                    results wins            END SELECT        CASE lizard            'AI chooses to play lizard            LoadImage Control(assetsRPSLS_helpjpgPX), "assets\lizard.png"            SELECT CASE choose                CASE paper                    'failure                    results looses                CASE rock                    ' victory                    results wins                CASE scissor                    ' victory                    results wins                CASE spok                    'failure                    results looses                CASE lizard                    ' draw                    results draws            END SELECT    END SELECTEND SUB  SUB __UI_MouseEnter (id AS LONG)    SELECT CASE id        CASE RockHandScissor         CASE ScoreLB         CASE Frame1         CASE StartBT         CASE ExitBT         CASE HelpBT         CASE ScoreNLB         CASE ROCKHANDSCISSORGAMELB       END SELECTEND SUB SUB __UI_MouseLeave (id AS LONG)    SELECT CASE id        CASE RockHandScissor         CASE ScoreLB         CASE Frame1         CASE StartBT         CASE ExitBT         CASE HelpBT         CASE ScoreNLB         CASE ROCKHANDSCISSORGAMELB         CASE ChooseYourMoveAndWaitAIsOneLB     END SELECTEND SUB SUB __UI_FocusIn (id AS LONG)    SELECT CASE id        CASE StartBT         CASE ExitBT         CASE HelpBT     END SELECTEND SUB SUB __UI_FocusOut (id AS LONG)    'This event occurs right before a control loses focus.    'To prevent a control from losing focus, set __UI_KeepFocus = True below.    SELECT CASE id        CASE StartBT         CASE ExitBT         CASE HelpBT     END SELECTEND SUB SUB __UI_MouseDown (id AS LONG)    SELECT CASE id        CASE RockHandScissor         CASE ScoreLB         CASE Frame1         CASE StartBT         CASE ExitBT         CASE HelpBT         CASE ScoreNLB         CASE ROCKHANDSCISSORGAMELB         CASE HelpHLB     END SELECTEND SUB SUB __UI_MouseUp (id AS LONG)    SELECT CASE id        CASE RockHandScissor         CASE ScoreLB         CASE Frame1         CASE StartBT         CASE ExitBT         CASE HelpBT         CASE ScoreNLB         CASE ROCKHANDSCISSORGAMELB         CASE HelpHLB     END SELECTEND SUB SUB __UI_KeyPress (id AS LONG)    'When this event is fired, __UI_KeyHit will contain the code of the key hit.    'You can change it and even cancel it by making it = 0    SELECT CASE id        CASE StartBT         CASE ExitBT         CASE HelpBT     END SELECTEND SUB SUB __UI_TextChanged (id AS LONG)    SELECT CASE id    END SELECTEND SUB SUB __UI_ValueChanged (id AS LONG)    SELECT CASE id    END SELECTEND SUB SUB __UI_FormResized END SUB 
 

 

Navigation

[0] Message Index

Go to full version