Example #1
0
    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)
Example #2
0
    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
Example #5
0
    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
Example #6
0
	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
Example #8
0
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()
Example #9
0
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()
Example #10
0
 def setUp(self):
     random.seed(13)
     self.egg = Egg(self._ID, 7, "Calgary", nickname="Flyboy")
Example #11
0
 def __init__(self, x, y, t, sp):
     self.ovoid = Egg(x, y, t, sp)
     self.circle = Ring()
     self.circle.start(x, y - sp / 2)
Example #12
0
 def addEggs(self, count):
     for c in range(count):
         self.eggs.append(Egg())
     print str(count) + ' eggs were added to ' + str(self.hashid)
Example #13
0
 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)
Example #14
0
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