Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

[solved] How to ignore incorrect mouse responses?

edited July 2014 in OpenSesame

Hi,

I have a very simple program where you touch a red dot that appears randomly on the screen. If you click the dot that is a correct response. However, if you click somewhere not on the dot, I want nothing to happen. Currently, when you make an incorrect response the program advances to the next trial. I basically want participants to stay on a trial until they click the dot.

Here is my mouse inline script, where I think I should be controlling this. I'm guessing something is wrong with my loop.

from openexp.mouse import mouse
from math import sqrt
my_mouse = mouse(exp, visible = False)

# Use Pythagoras to determine the click error 

xc = self.get('width') / 2
yc = self.get('height') / 2
# Determine x and y error
dx = self.get('cursor_x')- xc - self.get('xRed')
dy = self.get('cursor_y')- yc - self.get('yRed')

target_positions = [(dx, dy)]

# The maximum error from the target center
maxClickErr = 100
clickErr = sqrt(dx**2 + dy**2)

hit = False

for target_x, target_y in target_positions:
    if clickErr <= maxClickErr:
        exp.set('correct', 1)
        hit = True
    if not hit:
        pass

Comments

  • edited 1:29PM

    Hi,

    Your script is a bit funky in a number of ways. First off, you define a mouse object, but never use it, apparently because you use a mouse_response item to collect mouse clicks. Second, you define target_positions list, which is walked through, but is functionally ignored. (And at any rate does not contain a list of target positions, as you would expect!)

    Below you see a modified version of your script, which should do more-or-less what you want. The idea is to use a mouse object to collect clicks in an endless loop that is broken only when a click is close enough to the target (defined by the xRed and yRed experimental variables). Does that make sense? This script is instead of a mouse_response item, so you can remove that from your trial sequence.

    It might also be a good idea to walk through a basic Python tutorial, to get a grip on using while-loops, etc.

    Cheers!
    Sebastiaan

    from openexp.mouse import mouse
    from math import sqrt
    
    # Create a mouse object
    my_mouse = mouse(exp, visible=False)
    
    # The maximum error from the target center
    maxClickErr = 100
    
    # Get the coordinates of the display center, which are necessary to convert
    # from top-left to center-based coordinates.
    xc = self.get('width') / 2
    yc = self.get('height') / 2
    
    # Loop until we get a hit (i.e. a correct mouse click)
    while True:
        button, pos, timestamp = my_mouse.get_click()
        cursor_x, cursor_y = pos
        # Determine x and y error
        dx = cursor_x - xc - self.get('xRed')
        dy = cursor_y - yc - self.get('yRed')
        # Break the loop if there is a hit (use Pythagoras for click error)
        clickErr = sqrt(dx**2 + dy**2)
        if clickErr <= maxClickErr:
            break
    
  • edited 1:29PM

    Thanks Sebastiaan! This works perfectly. I will definitely have a look at the python training.

Sign In or Register to comment.

agen judi bola , sportbook, casino, togel, number game, singapore, tangkas, basket, slot, poker, dominoqq, agen bola. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 50.000 ,- bonus cashback hingga 10% , diskon togel hingga 66% bisa bermain di android dan IOS kapanpun dan dimana pun. poker , bandarq , aduq, domino qq , dominobet. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 10.000 ,- bonus turnover 0.5% dan bonus referral 20%. Bonus - bonus yang dihadirkan bisa terbilang cukup tinggi dan memuaskan, anda hanya perlu memasang pada situs yang memberikan bursa pasaran terbaik yaitu http://45.77.173.118/ Bola168. Situs penyedia segala jenis permainan poker online kini semakin banyak ditemukan di Internet, salah satunya TahunQQ merupakan situs Agen Judi Domino66 Dan BandarQ Terpercaya yang mampu memberikan banyak provit bagi bettornya. Permainan Yang Di Sediakan Dewi365 Juga sangat banyak Dan menarik dan Peluang untuk memenangkan Taruhan Judi online ini juga sangat mudah . Mainkan Segera Taruhan Sportbook anda bersama Agen Judi Bola Bersama Dewi365 Kemenangan Anda Berapa pun akan Terbayarkan. Tersedia 9 macam permainan seru yang bisa kamu mainkan hanya di dalam 1 ID saja. Permainan seru yang tersedia seperti Poker, Domino QQ Dan juga BandarQ Online. Semuanya tersedia lengkap hanya di ABGQQ. Situs ABGQQ sangat mudah dimenangkan, kamu juga akan mendapatkan mega bonus dan setiap pemain berhak mendapatkan cashback mingguan. ABGQQ juga telah diakui sebagai Bandar Domino Online yang menjamin sistem FAIR PLAY disetiap permainan yang bisa dimainkan dengan deposit minimal hanya Rp.25.000. DEWI365 adalah Bandar Judi Bola Terpercaya & resmi dan terpercaya di indonesia. Situs judi bola ini menyediakan fasilitas bagi anda untuk dapat bermain memainkan permainan judi bola. Didalam situs ini memiliki berbagai permainan taruhan bola terlengkap seperti Sbobet, yang membuat DEWI365 menjadi situs judi bola terbaik dan terpercaya di Indonesia. Tentunya sebagai situs yang bertugas sebagai Bandar Poker Online pastinya akan berusaha untuk menjaga semua informasi dan keamanan yang terdapat di POKERQQ13. Kotakqq adalah situs Judi Poker Online Terpercayayang menyediakan 9 jenis permainan sakong online, dominoqq, domino99, bandarq, bandar ceme, aduq, poker online, bandar poker, balak66, perang baccarat, dan capsa susun. Dengan minimal deposit withdraw 15.000 Anda sudah bisa memainkan semua permaina pkv games di situs kami. Jackpot besar,Win rate tinggi, Fair play, PKV Games