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