5
5
from pylsl import StreamInlet , resolve_stream
6
6
from scipy .signal import iirnotch , butter , lfilter
7
7
import math
8
+ from PIL import Image
8
9
9
10
# Initialize LSL stream
10
11
streams = resolve_stream ('name' , 'BioAmpDataStream' )
36
37
screen = pygame .display .set_mode ((800 , 600 ))
37
38
pygame .display .set_caption ('Beetle Game' )
38
39
39
- # Load beetle image
40
- beetle_image = pygame .image .load ('media\\ beetle.jpg' )
41
- beetle_image = pygame .transform .scale (beetle_image , (80 , 80 ))
40
+ # Load GIF and extract frames
41
+ gif_path = 'media/RobotBug.gif'
42
+ gif = Image .open (gif_path )
43
+
44
+ frames = []
45
+ for frame in range (gif .n_frames ):
46
+ gif .seek (frame )
47
+ frame_surface = pygame .image .fromstring (gif .tobytes (), gif .size , gif .mode )
48
+ frame_surface = pygame .transform .scale (frame_surface , (120 , 120 ))
49
+ frames .append (frame_surface )
50
+
51
+ frame_index = 0
52
+ frame_delay = 100 # Time per frame in milliseconds
53
+ last_frame_time = pygame .time .get_ticks ()
42
54
43
55
# Function to display a message on the screen
44
56
def show_message (message , duration = 3 ):
@@ -109,9 +121,9 @@ def calculate_focus_level(eeg_data, sampling_rate=500):
109
121
def update_beetle_position (focus_level , is_focus_stable ):
110
122
global beetle_y
111
123
if is_focus_stable :
112
- beetle_y = max (10 + beetle_image .get_height () // 2 , beetle_y - focus_speed_upward )
124
+ beetle_y = max (10 + frames [ 0 ] .get_height () // 2 , beetle_y - focus_speed_upward )
113
125
else :
114
- beetle_y = min (580 - beetle_image .get_height () // 2 , beetle_y + focus_speed_downward )
126
+ beetle_y = min (580 - frames [ 0 ] .get_height () // 2 , beetle_y + focus_speed_downward )
115
127
116
128
print ("STARTING GAME..." )
117
129
running = True
@@ -152,8 +164,15 @@ def update_beetle_position(focus_level, is_focus_stable):
152
164
153
165
last_focus_time = current_time
154
166
167
+ # Update GIF animation
168
+ current_tick = pygame .time .get_ticks ()
169
+ if current_tick - last_frame_time >= frame_delay :
170
+ frame_index = (frame_index + 1 ) % len (frames )
171
+ last_frame_time = current_tick
172
+
155
173
screen .fill ("#FFFFFF" )
156
174
pygame .draw .rect (screen , (0 , 0 , 0 ), (10 , 10 , 780 , 580 ), 5 )
175
+ beetle_image = frames [frame_index ] # Get current frame
157
176
screen .blit (beetle_image , (beetle_x - beetle_image .get_width () // 2 , beetle_y - beetle_image .get_height () // 2 ))
158
177
159
178
pygame .display .update ()
@@ -162,4 +181,4 @@ def update_beetle_position(focus_level, is_focus_stable):
162
181
print ("Exiting gracefully..." )
163
182
running = False
164
183
165
- pygame .quit ()
184
+ pygame .quit ()
0 commit comments