def test_constructor(self): self.assertIsInstance(self.egg, Egg) with self.assertRaises(ValueError): e = Egg(self._ID, -1, "Calgary") with self.assertRaises(TypeError): e = Egg(self._ID, 6, 2)
def __init__(self): pygame.init() ICON_IMG = pygame.transform.scale( pygame.image.load(os.path.join('assets', 'img', 'chocolate.png')), (32, 32)) self._BACKGROUND_IMG = pygame.image.load( os.path.join('assets', 'img', 'background.jpg')) self._GROUND_IMG = pygame.image.load( os.path.join('assets', 'img', 'ground.png')) self._PICKED_EGG_SOUND = pygame.mixer.Sound( os.path.join('assets', 'sfx', 'picked_egg.wav')) self._LOST_EGG_SOUND = pygame.mixer.Sound( os.path.join('assets', 'sfx', 'lost_egg.wav')) self._GAME_OVER_SOUND = pygame.mixer.Sound( os.path.join('assets', 'sfx', 'game_over.wav')) self._WIDTH, self._HEIGHT = 800, 480 self._WIN = pygame.display.set_mode((self._WIDTH, self._HEIGHT)) pygame.display.set_caption("Egg Hunt") pygame.display.set_icon(ICON_IMG) self._BLACK = (0, 0, 0) self._WHITE = (255, 255, 255) self._FONT = pygame.font.Font(None, 60) self._CLOCK = pygame.time.Clock() self._FPS = 60 self._basket = Basket(self._WIN) self._egg = Egg(self._WIN) self._score_bar = ScoreBar(self._WIN)
def _create_egg(self, egg_number, row_number): """Create an egg and place it in the row""" egg = Egg(self) #create an egg egg_width, egg_height = egg.rect.size #Each egg is pushed to the right one 'egg size' from the left margin. then x2 to account for width of each egg. #multiply it by egg position. Egg.x attribute sets postion of rect. egg.x = egg_width + 2 * egg_width * egg_number egg.rect.x = egg.x egg.rect.y = egg.rect.height + 2 * egg.rect.height * row_number self.eggs.add(egg)
def main(): pokeball = Egg() answer_input = ["Y", "N", "M", "F"] answer_input = [answer.casefold() for answer in answer_input] while True: if isinstance(pokeball, Egg): print( "You received a new Pokeball, would you like to see your new Pokemon? (Y/N):" ) choice = input().casefold() if choice == answer_input[0]: # YES pokeball = pokeball.hatch() print("========================") print("You got...", Egg.intro_header_name()) print("========================") elif choice == answer_input[1]: # NO print("Sad to see you go. Goodbye! 👋") return else: print("Sorry, your choice is invalid!\n") else: choice = UserInterface.menu(pokeball) if choice == "1": # game game_choice = UserInterface.game_menu() pokeball.play_game(game_choice) elif choice == "2": # feed feed_choice = input("(F)ood or (M)edicine: ").casefold() if feed_choice == answer_input[2]: # MEDICINE pokeball.eat_medicine() elif feed_choice == answer_input[3]: # FOOD food_choice = UserInterface.food_menu() pokeball.eat_food(food_choice) elif choice == "3": # status check status = pokeball.check_status() if status == -1: # checks the returned status of dead pokemon pokeball = Egg() elif choice == "4": print("Thanks for playing, Goodbye! 👋") return
def create_member(self, member_type: str, pokedex_num: int, source: str, nickname: str = None, item: str = None, ability: str = None, json: Dict = None) -> int: """ Adds a member (egg or Pokemon) to the player's _pc. Depending on the type of member, this function adds a new entry to the player's party. It also assigns the Pokemon an ID, and then increments it by 1 so that it is unique for the next member that is added. :param member_type: The party member type, either "Egg" or "Pokemon" :param pokedex_num: The Pokedex number that corresponds with the Pokemon species. :param source: The location that the Pokemon/Egg was acquired. :param nickname: The given name for the Pokemon. :param item: The item that the Pokemon is currently holding. :param ability: The Pokemon's special ability. :return: No return :rtype: None """ self._validate_pokedex_number(pokedex_num) if not nickname: nickname = self._POKEDEX[pokedex_num][0] if member_type == Pokemon.member_type(): self._pc_pokemon[self._ID] = Pokemon(self._ID, pokedex_num, source, nickname=nickname, item=item, ability=ability, json=json) self._ID += 1 elif member_type == Egg.member_type(): self._pc_pokemon[self._ID] = Egg(self._ID, pokedex_num, source, nickname=nickname, item=item, json=json) self._ID += 1 else: raise ValueError(f"{member_type} is not a valid Party Member type") self._write_to_file() return self._ID - 1
def __init__(self, parent=None): super(EggEditor, self).__init__(parent) self.editor = TextEdit() self.editor.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # self.editor.setTextInteractionFlags(Qt.LinksAccessibleByMouse) # 링크로 접속 허용?? layout = QVBoxLayout() # appear virtically layout.setMargin(0) layout.addWidget(self.editor) self.menuBar = QMenuBar(self) layout.setMenuBar(self.menuBar) self.setupMenu() self.setLayout(layout) self.resize(700, 700) self.__defineAttributes() self.__setShortCut() self.note = Egg()
def _create_fleet(self): """Create the fleet of eggs.""" #Create an egg and find the number of eggs ina row # Spacing between each egg is equal to one egg width egg = Egg(self) # need an egg to calculate width/height egg_width, egg_height = egg.rect.size #get the egg's w + h from tuple size attribute and store it in a variable available_space_x = self.settings.screen_width - (2 * egg_width) #calc horizontal space number_eggs_x = available_space_x // (2 * egg_width) #calcs number of eggs in row #Determine the number of rows of eggs that fit on the screen. owl_height = self.owl.rect.height #calc the avail space, find vertical space by subtracting the egg height from the top of the game # and the owl height from the bottom + 2 egg heights from bottom available_space_y = (self.settings.screen_height - (3 * egg_height) - owl_height) number_rows = available_space_y // (2 * egg_height) #create the full fleet of eggs. for row_number in range(number_rows): # creates number of rows we want for egg_number in range(number_eggs_x): #creates the eggs in one row self._create_egg(egg_number, row_number) # creates an egg per number of eggs per row
def openfile(): global table, time, x_angle, y_angle, day, month, year, root, embedFrame, recordsFrame, play name = tkFileDialog.askopenfilename(initialdir=".", title="Select file", filetypes=(("Text File", "*.txt"), ("All Files", "*.*"))) if name == "": # if file openning was cancelled then return return else: try: path = name.split('/') # get date from file name filename = path[len(path) - 1] day = filename[6:8] month = filename[4:6] year = filename[2:4] # create data model = TableModel() # load data data = load_data(name) # import data ti tablemodel model.importDict(data) except: tkMessageBox.showerror("Error", "File reading failed!") return # If another file is open already then close it if table != None: closefile() # Change App title to include currently open file root.title('Smart Egg 3D Visualisation ver.1.1 - ' + filename) # Create embed frame for pygame window embedFrame = tk.Frame(root, width=700, height=600) embedFrame.grid(row=0, column=0) # Create embed frame for table recordsFrame = tk.Frame(root, width=450, height=600) recordsFrame.grid(row=0, column=1) recordsFrame.pack_propagate(0) # Create table for records preview table = TableCanvas(recordsFrame, name="tablica", model=model, width=420, height=600, cols=0, rows=0, cellwidth=50, editable=False, showkeynamesinheader=True, reverseorder=0) table.grid(row=0, sticky=W + N + S) table.createTableFrame() # arrange columns width and order model.moveColumn(model.getColumnIndex('time'), 1) model.moveColumn(model.getColumnIndex('x'), 2) model.moveColumn(model.getColumnIndex('y'), 3) model.moveColumn(model.getColumnIndex('z'), 4) model.moveColumn(model.getColumnIndex('roll'), 5) model.moveColumn(model.getColumnIndex('pitch'), 6) model.columnwidths['time'] = 150 table.redrawTable() # Initiate and embed pygame os.environ['SDL_WINDOWID'] = str(embedFrame.winfo_id()) #os.environ['SDL_VIDEODRIVER'] = 'windib' screen = pygame.display.set_mode(SCREEN_SIZE, HWSURFACE | OPENGL | DOUBLEBUF) resize(*SCREEN_SIZE) pygame.init() pygame.display.init() #Bind keys and buttons events root.bind('<ButtonRelease-1>', handle_click) #click release event root.bind_all("<Up>", handle_arrow_keys) #press Up key event root.bind_all("<Down>", handle_arrow_keys) #press Down key event root.bind_all("<Left>", handle_arrow_keys) #press Left key event root.bind_all("<Right>", handle_arrow_keys) #press Right key event # Initiate OpenGL init_opengl() # Create OpenGL object egg = Egg((0.7, 0.0, 0.0), (1, .95, .8)) # Load first element values = get_record(0) if values != None: time = values[0] + ' ' + values[1] x_angle = values[2] y_angle = values[3] root.update() # loop control variable play = True while play: drawXYZCoordinate() # Draw XYZ axis labels drawText3D(-1.2, -1.0, -2.4, 'x') drawText3D(-2.2, -0.6, -2.4, 'y') drawText3D(-2.2, -1.0, -2.0, 'z') for event in pygame.event.get(): if event.type == KEYUP: handle_arrow_keys(event.key) glPushMatrix() # rotate object glRotate(float(x_angle), 0, 0, 1) glRotate(float(y_angle), 1, 0, 0) # render object and text egg.render(pygame) glPopMatrix() drawText(0, 2, time) # refresh screen pygame.display.flip() root.update()
def connect(): global table, x_angle, y_angle, root, embedFrame, play server = tkFileDialog.askopenfilename(initialdir=".", title="Select server", filetypes=(("Python files", "*.py"), ("All Files", "*.*"))) print server if server == "": # if server openning was cancelled then return return else: try: path = server.split('/') serverfilename = path[len(path) - 1] cmd = 'python ' + server p = subprocess.Popen( cmd, shell=False ) #p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) #out, err = p.communicate() #result = out.split('\n') #for lin in result: # if not lin.startswith('#'): # print(lin) # TODO 4: improve process control: https://stackoverflow.com/questions/3781851/run-a-python-script-from-another-python-script-passing-in-args # Show Confirmation if the connection was set up correctly except: tkMessageBox.showerror("Error", "Server failed!") return # TODO 3: Check if another process is not open and if is close it before staretin gthe new one. # If another file is open already then close it if table != None: closefile() # Change App title to include currently open file root.title('Smart Egg 3D Visualisation - ' + serverfilename) # Create embed frame for pygame window embedFrame = tk.Frame(root, width=1100, height=650) embedFrame.grid(row=0, column=0) # Initiate and embed pygame os.environ['SDL_WINDOWID'] = str(embedFrame.winfo_id()) screen = pygame.display.set_mode(SCREEN_SIZE, HWSURFACE | OPENGL | DOUBLEBUF) resize(*FULLSCREEN_SIZE) pygame.init() pygame.display.init() # Initiate OpenGL init_opengl() #clock = pygame.time.Clock() # Create OpenGL object egg = Egg((0.7, 0.0, 0.0), (1, .95, .8)) root.update() # loop control variable play = True while play: #then = pygame.time.get_ticks() values = read_values() x_angle = values[1] y_angle = values[2] drawXYZCoordinate() # Draw XYZ axis labels drawText3D(-1.2, -1.0, -2.4, 'x') drawText3D(-2.2, -0.6, -2.4, 'y') drawText3D(-2.2, -1.0, -2.0, 'z') glPushMatrix() # rotate object glRotate(float(x_angle), 0, 0, 1) glRotate(float(y_angle), 1, 0, 0) # render object and text egg.render(pygame) glPopMatrix() # refresh screen pygame.display.flip()
def setUp(self): random.seed(13) self.egg = Egg(self._ID, 7, "Calgary", nickname="Flyboy")
def __init__(self, x, y, t, sp): self.ovoid = Egg(x, y, t, sp) self.circle = Ring() self.circle.start(x, y - sp / 2)
def addEggs(self, count): for c in range(count): self.eggs.append(Egg()) print str(count) + ' eggs were added to ' + str(self.hashid)
def spawnEgg(self, energy, spawningUnitClass): ''' Если у юнита достаточно энергии, то он откладывает яйцо ''' Egg(field=self.field, center=(self.x, self.y), color=self.color, type_='Civilian',\ energy=energy, maxEnergy=energy, energyCons=self.energyCons/2, spawningUnitClass=spawningUnitClass) self.decreaseEnergy(energy)
def read_images(): n_image = Egg("nhk_logo_n.png", 372, 242, 0) h_image = Egg("nhk_logo_h.png", 372, 242, 290) k_image = Egg("nhk_logo_k.png", 372, 242, 579) return n_image, h_image, k_image