class MenuScreen: def __init__(self): #Loading self.up_img = pygame.image.load(os.path.join('assets', 'button_up.png')) self.down_img = pygame.image.load(os.path.join('assets', 'button_down.png')) self.font = pygame.font.Font(None, 30) #Background self.background = pygame.image.load(os.path.join('assets', 'menu_background.png')) #Play button y = 45 self.play_button = Button(self.up_img, self.down_img, pygame.Rect(200, 45, self.up_img.get_width(), self.up_img.get_height())) self.play_button.set_text(self.font, "Play") y += self.play_button.rect.height + 16 self.songs_button = Button(self.up_img, self.down_img, pygame.Rect(200, y, self.up_img.get_width(), self.up_img.get_height())) self.songs_button.set_text(self.font, "Songs") y += self.songs_button.rect.height + 16 self.creds_button = Button(self.up_img, self.down_img, pygame.Rect(200, y, self.up_img.get_width(), self.up_img.get_height())) self.creds_button.set_text(self.font, "Credit") def update(self): pass def draw(self, surface): surface.blit(self.background, pygame.Rect(0,0,320,240)) self.play_button.draw(surface) self.songs_button.draw(surface) self.creds_button.draw(surface) def OnMouseUp(self, pos): self.play_button.OnMouseUp(pos) self.songs_button.OnMouseUp(pos) self.creds_button.OnMouseUp(pos) def OnMouseDown(self, pos): self.play_button.OnMouseDown(pos) self.songs_button.OnMouseDown(pos) self.creds_button.OnMouseDown(pos) def setPlayCallback(self, callback): self.play_button.set_callback(callback) def setSongsCallback(self, callback): self.songs_button.set_callback(callback) def setCredsCallback(self, callback): self.creds_button.set_callback(callback)
class CredScreen: def __init__(self): #Loading self.up_img = pygame.image.load(os.path.join('assets', 'back_up.png')) self.down_img = pygame.image.load( os.path.join('assets', 'back_down.png')) self.font = pygame.font.Font(None, 30) #Background self.background = pygame.image.load( os.path.join('assets', 'credits_background.png')) #Back button self.back_btn = Button( self.up_img, self.down_img, pygame.Rect(4, 4, self.up_img.get_width(), self.up_img.get_height())) def update(self): pass def draw(self, surface): surface.blit(self.background, pygame.Rect(0, 0, 320, 240)) self.back_btn.draw(surface) def OnMouseUp(self, pos): self.back_btn.OnMouseUp(pos) def OnMouseDown(self, pos): self.back_btn.OnMouseDown(pos) def setBackCallback(self, callback): self.back_btn.set_callback(callback)
class PlayScreen: def __init__(self): #Loading self.up_img = pygame.image.load(os.path.join('assets', 'back_up.png')) self.down_img = pygame.image.load(os.path.join('assets', 'back_down.png')) self.up_img_right = pygame.transform.flip(self.up_img, True, False) self.down_img_right = pygame.transform.flip(self.down_img, True, False) self.up_touch = pygame.image.load(os.path.join('assets', 'touch_up.png')) self.down_touch = pygame.image.load(os.path.join('assets', 'touch_down.png')) self.font = pygame.font.Font(None, 30) #Background self.background = pygame.image.load(os.path.join('assets', 'background.png')) self.fretboard = pygame.image.load(os.path.join('assets', 'fretboard.png')) self.fretboard_rect = pygame.Rect((0,0), (1,1)) #Back button self.back_btn = Button(self.up_img, self.down_img, pygame.Rect(4, 4, self.up_img.get_width(), self.up_img.get_height())) #Note Buttons self.fretpositions = [[(32,65), (0,0),(270, 61),(385, 60),(490, 58),(600, 56),(700, 55),(790, 53),(880, 51),(960, 50),(1040, 48),(1120, 46), (1185, 45)], [(32,90), (0,0),(270, 89),(385, 88),(490, 88),(600, 87),(700, 87),(790, 87),(880, 86),(960, 86),(1040, 85),(1120, 85), (1185, 85)], [(32,115),(0,0),(270, 116),(385, 117),(490, 118),(600, 119),(700, 120),(790, 120),(880, 121),(960, 122),(1040, 123),(1120, 124), (1185, 125)], [(32,145),(0,0),(270, 148),(385, 150),(490, 151),(600, 153),(700, 155),(790, 156),(880, 158),(960, 160),(1040, 161),(1120, 163), (1185, 165)]] size = (32, 32) self.buttons = [] for fret in range(0,11): for string in range(0,4): if fret != 1: x,y = self.fretpositions[3-string][fret] rect = pygame.Rect((x-16, y-16), size) btn = Button(self.up_touch, self.down_touch, rect) btn.set_callback(self.note_callback) btn.set_info((fret, string)) self.buttons.append(btn) slide_size = (36,30) left_pos = (120, 205) right_pos = (164, 205) self.slide_left = Button(self.up_img, self.down_img, pygame.Rect(left_pos,slide_size)) self.slide_left.set_callback(self.slide_left_callback) self.slide_right = Button(self.up_img_right, self.down_img_right, pygame.Rect(right_pos,slide_size)) self.slide_right.set_callback(self.slide_right_callback) self.amount_moved = 0 def update(self): pass def draw(self, surface): surface.blit(self.background, pygame.Rect(0,0,320,240)) surface.blit(self.fretboard, self.fretboard_rect) self.back_btn.draw(surface) for btn in self.buttons: btn.draw(surface) self.slide_left.draw(surface) self.slide_right.draw(surface) def OnMouseUp(self, pos): self.back_btn.OnMouseUp(pos) self.slide_left.OnMouseUp(pos) self.slide_right.OnMouseUp(pos) for btn in self.buttons: btn.OnMouseUp(pos) def OnMouseDown(self, pos): self.back_btn.OnMouseDown(pos) self.slide_left.OnMouseDown(pos) self.slide_right.OnMouseDown(pos) for btn in self.buttons: btn.OnMouseDown(pos) def setBackCallback(self, callback): self.back_btn.set_callback(callback) def note_callback(self, btn): print("note pressed"+str(btn.info)) print(btn.text_string) amp_on() play_fret(btn.info[0], btn.info[1], 1) amp_off()
class SongScreen: def __init__(self): #Loading self.up_img = pygame.image.load(os.path.join('assets', 'back_up.png')) self.down_img = pygame.image.load( os.path.join('assets', 'back_down.png')) self.btn_up_img = pygame.image.load( os.path.join('assets', 'button_up.png')) self.btn_down_img = pygame.image.load( os.path.join('assets', 'button_down.png')) self.btn_up_img = pygame.transform.scale(self.btn_up_img, (220, 40)) self.btn_down_img = pygame.transform.scale(self.btn_down_img, (220, 40)) self.font = pygame.font.Font(None, 30) #Background self.background = pygame.image.load( os.path.join('assets', 'background.png')) #Back button self.back_btn = Button( self.up_img, self.down_img, pygame.Rect(4, 4, self.up_img.get_width(), self.up_img.get_height())) self.smoke_btn = Button(self.btn_up_img, self.btn_down_img, pygame.Rect((50, 50), (220, 40))) self.smoke_btn.set_text(self.font, "Pachelbel's Canon") self.smoke_btn.set_callback(self.smoke_callback) self.seven_btn = Button(self.btn_up_img, self.btn_down_img, pygame.Rect((50, 110), (220, 40))) self.seven_btn.set_text(self.font, "Happy Birthday") self.seven_btn.set_callback(self.seven_callback) self.scale_btn = Button(self.btn_up_img, self.btn_down_img, pygame.Rect((50, 170), (220, 40))) self.scale_btn.set_text(self.font, "Test") self.scale_btn.set_callback(self.scale_callback) self.title = self.font.render("Songs", True, (255, 255, 255)) def update(self): pass def draw(self, surface): surface.blit(self.background, pygame.Rect(0, 0, 320, 240)) self.back_btn.draw(surface) self.smoke_btn.draw(surface) self.seven_btn.draw(surface) self.scale_btn.draw(surface) title_rect = self.title.get_rect() title_rect.center = (160, title_rect.height / 2 + 10) surface.blit(self.title, title_rect) def OnMouseUp(self, pos): self.back_btn.OnMouseUp(pos) self.smoke_btn.OnMouseUp(pos) self.seven_btn.OnMouseUp(pos) self.scale_btn.OnMouseUp(pos) def OnMouseDown(self, pos): self.back_btn.OnMouseDown(pos) self.smoke_btn.OnMouseDown(pos) self.seven_btn.OnMouseDown(pos) self.scale_btn.OnMouseDown(pos) def setBackCallback(self, callback): self.back_btn.set_callback(callback) def smoke_callback(self, btn): print("smoke") play_song(0) def seven_callback(self, btn): print("seven") play_song(1) def scale_callback(self, btn): print("scale") play_song(2)