![]() |
#5
|
|||
|
|||
Hello again!
I got the lower window exchange to work. That alone taught me some things about global variables and how to think about those TexQuads. Now on to the next problem: Exchanging the picture in the lower window 7 out of 10 times with one picture and 3 times with another (randomly). I tried the list strategy, as suggested by Erikvdb, I've consulted all my resources, and I managed to implement it. However, the problem is that sometimes it shows the picture C 3 random times (as it should), other times, only 1 or 2 times. Almost as if it's randomly picking from the list 10 times. However, I want it to go through the entire list once. I am wondering if my list implementation is correct? Maybe I should not put several identical elements in a list? Or it's a problem regarding the implementation inside the "while loop" I tried to simplify the code and create this as a separate script with the simplest form of the issue, as suggested by Jeff. Rather than code debugging I am hoping that someone might link me to a relevant example of a list within a loop. Obviously I am lacking the logic behind it especially when things get nested. Code:
## Import Vizard modules ## import viz import viztask import random #Start Vizard: viz.go() ## STIMULI ## #pictures pictureA = viz.add('picA.jpg') default = viz.add('default.png') #sound cue = viz.addAudio('dong.wav') #list (7 times picture B and 3 times picture C) pictureList = ['picB.png', 'picB.png', 'picB.png', 'picB.png', 'picB.png', 'picB.png', 'picC.png', 'picC.png', 'picC.png'] #Make a screen window: screen1 = viz.addTexQuad(size=0.5) screen1.setPosition([0,2.1,1.3]) screen1.setSize([0.4, 0.4]) #Make a second screen window: screen2 = viz.addTexQuad(size=0.5) screen2.setPosition([0,1.6,1.3]) screen2.setSize([0.4, 0.4]) ## TASK## def task(): screen1.texture(pictureA) screen2.texture(default) def playCueLoop(): # default picture is shown in lower window + 10 times, at randomly intersperced intervals, a sound beep plays & each time that happens, the lower window replaces the default picture randomly with 7 times picB and 3 times pic C count = 0 while count < 10: count += 1 cue.play() pictureIndex = 0 random.shuffle(pictureList) picture = viz.add(pictureList[pictureIndex]) screen2.texture(picture) pictureIndex += 1 yield viztask.waitTime(0.5) screen2.texture(default) yield viztask.waitTime(0) yield viztask.waitTime(random.randrange(1,4)) viztask.schedule (playCueLoop()) viztask.schedule(task()) Code:
photoList = ['A1.jpg','A2.jpg','A3.jpg','A4.jpg','A5.jpg','A6.jpg','A7.jpg','A8.jpg','A9.jpg','A10.jpg'] random.shuffle(photoList) photo = viz.add('Pictures\\' + photoList[photoIndex]) photoFrame.texture(photo) photoIndex += 1 P.S. I know Erikvdb suggested in another thread to stop the sound as well, however I left that out for now, to simplify the code ![]() |
Tags |
condition, loop, picture, sound |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
playing a sound multiple times at different timings | jelly | Vizard | 3 | 02-04-2016 03:39 AM |