WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   IF statements and Lists (https://forum.worldviz.com/showthread.php?t=3887)

new_horizon 08-19-2011 07:19 AM

IF statements and Lists
 
Hi All,

A very basic (I'm sure) programming question, but I am creating a list of three mouse position clicks and if one of these clicks falls within a certain range, I would like to the program to execute some commands.

I'm sure this is very simple, but here is my code below...

Code:

yield viztask.waitTime(1.0) # wait before prompt
                yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitButtonDown(zone2button),viztask.waitButtonDown(zone3button),viztask.waitButtonDown(zone4button),viztask.waitButtonDown(zone5button),viztask.waitButtonDown(nonebutton)])
                m_pos1 = viz.mouse.getPosition()
                yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitButtonDown(zone2button),viztask.waitButtonDown(zone3button),viztask.waitButtonDown(zone4button),viztask.waitButtonDown(zone5button),viztask.waitButtonDown(nonebutton)])
                m_pos2 = viz.mouse.getPosition()
                yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitButtonDown(zone2button),viztask.waitButtonDown(zone3button),viztask.waitButtonDown(zone4button),viztask.waitButtonDown(zone5button),viztask.waitButtonDown(nonebutton)])
                m_pos3 = viz.mouse.getPosition()
                m_pos = [m_pos1,m_pos1,m_pos3]
                grid.visible(viz.OFF)
                zone1button.visible(viz.OFF)
                zone2button.visible(viz.OFF)
                zone3button.visible(viz.OFF)
                zone4button.visible(viz.OFF)
                zone5button.visible(viz.OFF)
                nonebutton.visible(viz.OFF)
                if on_off == 1:
                        stim=nv
                        if m_pos > 0.4 and m_pos< 0.6:
                                R = 1
                                stim = 0
                                prob_calc(R) # should be using last valid nv & R to calc next nv
                                stop_calc()
                        else:
                                R = 0
                                stim = 0
                                prob_calc(R) # should be using last valid nv & R to calc next nv
                                stop_calc()
                if on_off == 0:
                        stim = 0
                        nulltrials = nulltrials + 1
                        if m_pos > 0.4 and m_pos < 0.6:
                                falsep = falsep+1
                        falserate = 100*falsep/nulltrials
                print 'Trial:',tr,'Reversals: ', reverse, 'False pos rate:', falserate, 'M_pos1', m_pos1,'M_pos2', m_pos2,'M_pos3', m_pos3
                print '--NEXT--'

Can anyone advise me?

Thanks

Jeff 08-19-2011 06:22 PM

You can create a for loop to iterate through the positions in your m_pos list. Each position is itself a list of X,Y values. For example, the following checks to see if a position is in the top right quadrant:
Code:

m_pos1=[0.3,0.3]
m_pos2=[0.8,0.2]
m_pos3=[0.8,0.8]
m_pos = [m_pos1,m_pos2,m_pos3]

for pos in m_pos:
        if pos[0] > 0.5 and pos[1] > 0.5:
                print pos,'is in the top right quadrant'


new_horizon 08-23-2011 01:45 AM

Thanks Jeff, perfect


All times are GMT -7. The time now is 04:40 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC