Howdy, Stranger!

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

Supported by

[solved] Count number of times something happens in a while loop

edited July 2014 in OpenSesame

Hi all,

I have a while loop with two if statements written in an inline script. I would like to count how many times each if statement is used through the course of the experiment.

The if statements each evaluate whether a mouse click occurs within a specified area (within a green circle or within a white circle), so there isn't a correct type variable, only sets of coordinates. I could record the coordinates, but then later I would have to figure whether those coordinates were for the white or the green circle.

I'm thinking there should be a way to add a count function to each of the if statements, but I'm not having any luck.

Comments

  • edited 9:29PM

    Hi Darby,

    I'm assuming you're working with a script from the discussion below, or some variation of it, but the basic principle should work anywhere.

    What you could do is use a variable nClickErr that is incremented (+= 1) every time that an erroneous click is registered. This will give you a running total of the number of times that this happens during the entire experiment. Just read the code below carefully, and the logic should be clear (it's pretty simple).

    Is this what you had in mind?

    Cheers!
    Sebastiaan

    exp.set('xRed', 0)
    exp.set('yRed', 0)
    
    from openexp.mouse import mouse
    from math import sqrt
    
    # Create a mouse object
    my_mouse = mouse(exp, visible=True)
    
    # The maximum error from the target center
    maxClickErr = 100
    
    # Get the number of click errors and reset to 0 if this variable hasn't been
    # defined yet
    nClickErr = self.get_check('nClickErr', default=0)
    
    # 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:
            # Increase the number of click errors
            nClickErr += 1
            break
    # Set the number of click errors as an experiment variable.
    exp.set('nClickErr', nClickErr)
    
  • edited 9:29PM

    Thanks so much Sebastiaan. As usual, this works great.

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