Sign in to follow this  
Followers 0
demonsc

Rock, Paper, Scissors

3 posts in this topic

#1 ·  Posted (edited)

Ok well i tried to make a Rock Paper Scissor game but ive come along one problem.. This project is for school btw,,

I set up 2 sets of keys for RPS...

F1 F2 F3 and NUM1 NUm2 Num3

Looks like this

Func rock()

$rock = GUICtrlCreatePic(@ScriptDir&"\rock.gif", 220, 100, 67, 77)

EndFunc

Func paper()

$paper = GUICtrlCreatePic(@ScriptDir&"\paper.gif", 220, 165, 67, 77)

EndFunc

Func scissors()

$scissors = GUICtrlCreatePic(@ScriptDir&"\scissors.gif", 220, 235, 67, 77)

EndFunc

;DIFFERENT SET OF FUNCTIONS FOR OTHER HAND

Func rock1()

$rock = GUICtrlCreatePic(@ScriptDir&"\rock.gif", 100, 100, 67, 77)

EndFunc

Func paper2()

$paper = GUICtrlCreatePic(@ScriptDir&"\paper.gif", 100, 165, 67, 77)

EndFunc

Func scissors3()

$scissors = GUICtrlCreatePic(@ScriptDir&"\scissors.gif", 100, 235, 67, 77)

EndFunc

$rock1 = HotKeySet("{F1}", "rock1")

$paper1 = HotKeySet("{F2}", "paper2")

$scissors1 = HotKeySet("{F3}", "scissors3")

$rock2 = HotKeySet("{NUMPAD1}", "rock")

$paper2 = HotKeySet("{NUMPAD2}", "paper")

$scissors2 = HotKeySet("{NUMPAD3}", "scissors")

I tried to dooo this

If $msg = $rock1 and $rock2 Then

MsgBox(1, "TIE", "TIE GAME!")

EndIf

But everytime i run the script the message box comes up with out me even clickin anything..

How do i get it so that If the 2 players push F1 and NUMPAD1 display TIE Game because, Rock can't defeat rock lol... Its driving me crazy!

Heres my full source

;===================================================================================================


==
;Written in AUTOIT
;===================================================================================================


==
;IMPORT STATEMENTS
;============================================
#include <GUIConstants.au3>
;============================================
;GAME CONSOLE EXTENTIONS
;=================================================
HotKeySet("{NUMPAD7}", "close")
If WinExists("Game Console CES") = 1 Then
    MsgBox(1, "Please use Game Console CES", "Game must run with the Game Console before you can play! Run the patch if using source code.")
    Exit
    EndIf
;================================================
;GUI COMPONENTS
GuiCreate("RockPaperScissors (CES)", 400, 400)
GuiSetState(true)
GUISetBkColor(0xAAE771);SETS THE COLOR OF THE GUI TO BE A LIME COLOR

GUICtrlCreateLabel("PLAYER 1", 100, 50)
GUICtrlCreateLabel("PLAYER 2", 220, 50)

$start = GuiCtrlCreateButton("Start", 10, 10)

;================================================

;================================================


    

While 1 
    
    $msg = GUIGetMsg()
    
    If $msg = $GUI_EVENT_CLOSE Then
        Exit
    EndIf
    
    If $msg = $start Then
        Game()
    EndIf
    

    
WEnd




;FUNCTION LIST

Func rock()
    $rock = GUICtrlCreatePic(@ScriptDir&"\rock.gif", 220, 100, 67, 77)
EndFunc

Func paper()
    $paper = GUICtrlCreatePic(@ScriptDir&"\paper.gif", 220, 165, 67, 77)
EndFunc

Func scissors()
    $scissors = GUICtrlCreatePic(@ScriptDir&"\scissors.gif", 220, 235, 67, 77)
EndFunc




;DIFFERENT SET OF FUNCTIONS FOR OTHER HAND

Func rock1()
    $rock = GUICtrlCreatePic(@ScriptDir&"\rock.gif", 100, 100, 67, 77)
EndFunc

Func paper2()
    $paper = GUICtrlCreatePic(@ScriptDir&"\paper.gif", 100, 165, 67, 77)
EndFunc

Func scissors3()
    $scissors = GUICtrlCreatePic(@ScriptDir&"\scissors.gif", 100, 235, 67, 77)
EndFunc


Func Game()
    
    $msg = GuiGetMsg()
    
    
;SET HotKeySet
$rock1 = HotKeySet("{F1}", "rock1")
$paper1 = HotKeySet("{F2}", "paper2")
$scissors1 = HotKeySet("{F3}", "scissors3")

$rock2 = HotKeySet("{NUMPAD1}", "rock")
$paper2 = HotKeySet("{NUMPAD2}", "paper")
$scissors2 = HotKeySet("{NUMPAD3}", "scissors")
    
    
MsgBox(1, "Start", "Game Start Now!")



EndFunc

    

Func close()
    Exit
EndFunc
Edited by demonsc

Share this post


Link to post
Share on other sites



All i need to know is how to make a gui recognize that 2 keys are being pushed down??

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Not trying to steal your show but this is how I would do it:

#include <GUIConstants.au3>

;Define array with weapon name and element number of weapon it destroys
Global $arrayWeapons[3][2] = [["Rock", 2],["Paper", 0],["Scissors", 1]]
Global $player1, $player2, $player1complete, $player2Complete

$rock1 = HotKeySet("{F1}", "rock1")
$paper1 = HotKeySet("{F2}", "paper1")
$scissors1 = HotKeySet("{F3}", "scissors1")

$rock2 = HotKeySet("{NUMPAD1}", "rock2")
$paper2 = HotKeySet("{NUMPAD2}", "paper2")
$scissors2 = HotKeySet("{NUMPAD3}", "scissors2")

GuiCreate("Rock, Paper, Scissors", 400, 300)
GUISetState (@SW_SHOW)

$reset = GuiCtrlCreateButton("Reset", 160, 260, 80, 20)

;Player 1 labels
GUICtrlCreateLabel ("Player 1:",  30, 30, 160, 60)
GUICtrlSetFont (-1,30)

$player1status = GUICtrlCreateLabel ("Ready",  200, 30, 150, 60)
GUICtrlSetFont (-1,30)

;Player 2 labels
GUICtrlCreateLabel ("Player 2:",  30, 100, 160, 60)
GUICtrlSetFont (-1,30)

$player2status = GUICtrlCreateLabel ("Ready",  200, 100, 150, 60)
GUICtrlSetFont (-1,30)

;Winner status label
$winner = GUICtrlCreateLabel ("",  0, 200, 400, 60, $SS_CENTER)
GUICtrlSetFont (-1,30)

;PLAYER 1 ///////////////////////////////////
Func rock1()
    $player1 = 0
    $player1complete = true
    GuiCtrlSetdata($player1status, "Done")
EndFunc

Func paper1()
    $player1 = 1
    $player1complete = true
    GuiCtrlSetdata($player1status, "Done")
EndFunc

Func scissors1()
    $player1 = 2
    $player1complete = true
    GuiCtrlSetdata($player1status, "Done")
EndFunc
;PLAYER 1 ///////////////////////////////////

;PLAYER 2 ///////////////////////////////////
Func rock2()
    $player2 = 0
    $player2complete = true
    GuiCtrlSetdata($player2status, "Done")
EndFunc

Func paper2()
    $player2 = 1
    $player2complete = true
    GuiCtrlSetdata($player2status, "Done")
EndFunc

Func scissors2()
    $player2 = 2
    $player2complete = true
    GuiCtrlSetdata($player2status, "Done")
EndFunc
;PLAYER 2 ///////////////////////////////////

Do
    If $player1complete AND $player2complete Then
        
        ;Update status labels with player choices
        GuiCtrlSetdata($player1status, $arrayWeapons[$player1][0])
        GuiCtrlSetdata($player2status, $arrayWeapons[$player2][0])
        
        ;Tie
        If $player1 = $player2 Then
            GuiCtrlSetdata($winner, "TIE GAME")
        
        ;If player1 beats player2
        ElseIf $arrayWeapons[$player1][1] = $player2 Then
            GuiCtrlSetdata($winner, "Player 1 Wins")
        
        ;If player2 beats player1 (Could just use Else)    
        ElseIf $arrayWeapons[$player2][1] = $player1 Then
            GuiCtrlSetdata($winner, "Player 2 Wins")
        EndIf
        
        $player1complete = false
        $player2complete = false
    EndIf
    
    $msg = GUIGetMsg()
    
    If $msg = $reset Then
        GuiCtrlSetdata($player1status, "Ready")
        GuiCtrlSetdata($player2status, "Ready")
        GuiCtrlSetdata($winner, "")
    EndIf
        
Until $msg = $GUI_EVENT_CLOSE
Edited by weaponx

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0