Ejemplo n.º 1
0
def runGame():
    pygame.init()

    settings = Settings()
    screen = pygame.display.set_mode((settings.screenWidth, settings.screenHeight))
    pygame.display.set_caption("AI Game")
    player = Player(screen, settings)
    map = Group()

    # testing spikes
    spikes = Group()
    newSpike, newSpike2 = Spike(settings, screen), Spike(settings, screen)
    newSpike.rect.x, newSpike.rect.bottom = 250, settings.screenHeight -50
    newSpike2.rect.x, newSpike2.rect.bottom = 600, settings.screenHeight -50
    spikes.add(newSpike, newSpike2)
    # creates a lone block above the rest for testing
    newBlock = Map(settings, screen)
    newBlock.rect.x, newBlock.rect.y = 300, settings.screenHeight - 100
    map.add(newBlock)
    gf.makeMap(map, screen, settings) # makes the bottom layer right now

    while True:
        screen.fill(settings.bgColor)    # Fills background with solid color, can add clouds or something later
        gf.blitMap(map)                  # Draws the map on screen
        gf.drawGrid(settings, screen)    # Draw the Grid, helps for coding can be removed

        gf.checkEvents(player)           # Checks Button Presses
        gf.checkCollide(player, map, spikes)     # Checks to see if player is hitting the world around him
        player.updatePlayer(map)         # Movement of the player
        player.drawPlayer()              # Draws the player
        gf.checkJump(player)             # Checks to see if top of jump is reached

        spikes.draw(screen)

        pygame.display.flip()            # Makes the display work (Don't Touch, Make sure this stay near the bottom)
Ejemplo n.º 2
0
def runGame():
    pygame.init()

    settings = Settings()
    screen = pygame.display.set_mode(
        (settings.screenWidth, settings.screenHeight))
    pygame.display.set_caption("AI Game")
    player = Player(screen, settings)

    map = Group()  # Group of all Blocks
    spikes = Group()  # testing spikes
    enemies = Group()  # testing enemy

    newEnemy = Baddie(screen, settings)
    newEnemy.rect.x, newEnemy.rect.y = 550, settings.screenHeight - 85
    enemies.add(newEnemy)

    newSpike, newSpike2 = Spike(settings, screen), Spike(settings, screen)
    newSpike.rect.x, newSpike.rect.bottom = 250, settings.screenHeight - 50
    newSpike2.rect.x, newSpike2.rect.bottom = 600, settings.screenHeight - 50
    spikes.add(newSpike, newSpike2)
    gf.makeMap(map, screen, settings)  # makes the bottom layer right now

    while True:
        screen.fill(
            settings.bgColor
        )  # Fills background with solid color, can add clouds or something later
        gf.blitMap(map)  # Draws the map on screen
        gf.drawGrid(settings,
                    screen)  # Draw the Grid, helps for coding can be removed

        gf.checkEvents(player)  # Checks Button Presses
        gf.checkCollide(
            player, map,
            spikes)  # Checks to see if player is hitting the world around him
        gf.enemyBlockCollide(enemies, map)
        gf.enemyPlayerCollide(player, enemies)
        player.updatePlayer(map)  # Movement of the player
        player.drawPlayer()  # Draws the player

        for enemy in enemies:
            enemy.update()
            enemy.blit()

        gf.checkJump(player)
        spikes.draw(screen)

        pygame.display.flip(
        )  # Makes the display work (Don't Touch, Make sure this stay near the bottom)
Ejemplo n.º 3
0
def create_object(ch, x, y):
	global ending

	x -= BLOCK_SIZE // 2
	y -= BLOCK_SIZE // 2

	if ch == 'b':
		obj = Platform(x, y)
		gfw.world.add(gfw.layer.platform, obj)
	elif ch == 's':
		obj = Spike(x, y)
		gfw.world.add(gfw.layer.spike, obj)
	elif ch == 'l':
		obj = HalfSpike(0, x, y)
		gfw.world.add(gfw.layer.spike, obj)
	elif ch == 'f':
		obj = HalfSpike(1, x, y)
		gfw.world.add(gfw.layer.spike, obj)
	elif ch == 'r':
		obj = HalfSpike(2, x, y)
		gfw.world.add(gfw.layer.spike, obj)
	elif ch == 't':
		obj = HalfSpike(3, x, y)
		gfw.world.add(gfw.layer.spike, obj)
	elif ch == 'c':
		obj = Save(x, y)
		gfw.world.add(gfw.layer.save, obj)
Ejemplo n.º 4
0
	def __setUpScene(self):
		"""
		Build the scene geometry, lights, UI text, camera and spike walls
		"""
		cm = CardMaker('card')
		cm.setFrame(-self.gameWidth/2,self.gameWidth/2,-self.gameHeight/2,self.gameHeight/2)
		cm.setUvRange((0, 0), (2, 2))
		card = self.render.attachNewNode(cm.generate())

		tex = self.loader.loadTexture('models/grass.jpg')
		card.setTexture(tex)
		card.lookAt(0, 0, -1)

		self.frameGenText = OnscreenText(align=TextNode.ALeft, text = '', pos = (-1.7, 0.9), scale = 0.1, fg = (1,1,1,1))
		self.currentGenText = OnscreenText(align=TextNode.ALeft, text = '', pos = (-1.7, 0.8), scale = 0.1, fg = (1,1,1,1))
		self.avgScoreText = OnscreenText(align=TextNode.ALeft, text = '', pos = (-1.7, 0.7), scale = 0.1, fg = (1,1,1,1))
	
		dlight = DirectionalLight('dlight')
		dlight.setColor(VBase4(1, 1, 1, 1))
		dlnp = self.render.attachNewNode(dlight)
		dlnp.lookAt(1,-1,-1)
		self.render.setLight(dlnp)

		dlight2 = DirectionalLight('dlight2')
		dlight2.setColor(VBase4(1, 1, 1, 1))
		dlnp2 = self.render.attachNewNode(dlight2)
		dlnp2.lookAt(-1,1,-1)
		self.render.setLight(dlnp2)

		alight = AmbientLight('alight')
		alight.setColor(VBase4(0.2, 0.2, 0.2, 1))
		alnp = self.render.attachNewNode(alight)
		self.render.setLight(alnp)

		for i in range(-self.gameWidth/2, self.gameWidth/2 + 1, 8):
			Spike(self, i, -self.gameHeight/2, 'wall')
			Spike(self, i, self.gameHeight/2, 'wall')
		for i in range(-self.gameHeight/2 + 8,self.gameHeight/2 + 1 - 8, 8):
			Spike(self, -self.gameWidth/2, i, 'wall')
			Spike(self, self.gameWidth/2, i, 'wall')

		self.disableMouse()
		self.camera.setPos(0, -100, 80)
		self.camera.lookAt(0, 0, 0)
Ejemplo n.º 5
0
	def __goNextGen(self):
		"""
		Evolve the population one generation, clear the scene and generate it again
		in other random positions
		"""
		if self.bestGenomeScore < Panda.getBestPanda().carrotsEaten:
			self.bestGenomeScore = Panda.getBestPanda().carrotsEaten
			self.bestGenomeGenes = Panda.getBestPanda().brainWeights

		self.actualFrameNumber = 0
		self.ga.step()

		Spike.clearNormalSpikes()
		Panda.clearPandas(self)
		Carrot.clearCarrots(self)

		self.__generateSpikes()
		self.__generatePandas()
		self.__generateCarrots()
Ejemplo n.º 6
0
def enter():
    global boy, ground, background, spikeList, Hp_Bar, Monster_Bear_List, Monster_Mage_List, ChestList, CHicken,\
        GUI, FlatFormList, FLAG

    background = Background()
    boy = Boy(background)
    Hp_Bar = HP_BAR()
    ground = [Ground(i, background) for i in range(len(Ground.groundList))]
    Monster_Bear_List = [
        Monster_bear(i, background) for i in range(len(Monster_bear.posList))
    ]
    Monster_Mage_List = [
        Monster_mage(i) for i in range(len(Monster_mage.posList))
    ]
    spikeList = [Spike(i, background) for i in range(len(Spike.spikeList))]
    ChestList = [Chest(i, background) for i in range(len(Chest.chestList))]
    GUI = Gui()
    FlatFormList = [
        Flatform(i, background) for i in range(len(Flatform.flatFormList))
    ]
    FLAG = Flag(background)

    game_world.add_object(background, 0)
    for i in range(len(ground)):
        game_world.add_object(ground[i], 0)
    game_world.add_object(boy, 2)
    game_world.add_object(Hp_Bar, 1)
    for i in range(len(Monster_Bear_List)):
        game_world.add_object(Monster_Bear_List[i], 1)
    for i in range(len(Monster_Mage_List)):
        game_world.add_object(Monster_Mage_List[i], 1)
    for i in range(len(ChestList)):
        game_world.add_object(ChestList[i], 1)
    for i in range(len(spikeList)):
        game_world.add_object(spikeList[i], 1)
    game_world.add_object(GUI, 1)
    for i in range(len(FlatFormList)):
        game_world.add_object((FlatFormList[i]), 1)
    game_world.add_object(FLAG, 1)

    background.set_center_object(boy)
    boy.set_background(background)
Ejemplo n.º 7
0
	def __generateSpikes(self):
		"""
		Generate randomly positioned normal spikes in a way that there is
		a minimum distance between them
		"""
		i = 0
		while i < self.spikeNumber:
			colisionDetected = False
			x = randrange(10 - self.gameWidth/2, -10 + self.gameWidth/2)
			y = randrange(10 - self.gameHeight/2, -10 + self.gameHeight/2)
			spikePoint = Point3(x, y, 0)

			for spike in Spike.spikeNormalList:
				point = spike.spikeHandle.getPos(self.render)
				dist = (point.getXy() - spikePoint.getXy()).lengthSquared()
				if dist < 100:
					colisionDetected = True
					break

			if colisionDetected:
				continue

			Spike(self, x, y)
			i += 1
Ejemplo n.º 8
0
 def loadLevel(self):
    try:
       f = open("data/levels/%03d"%self.level)
    except IOError:
       self.gameEngine.scene = GameOver(self.gameEngine)
       return
    
    del self.objects[:]
    x=y=0   
    
    while 1:
       row = f.readline()
       if not row:
          break
          
       for col in row:
          
          obj=None
          
          #S == start
          if col == "S":
             self.player = Player(self,x,y)
             self.spawn = (x,y)
             
          #E == end
          if col == "E":
             obj = Goal(self,x,y)
          
          #walls
          if col == "W":
             obj = Wall(self,x,y,(255,255,255))
          if col == "R":
             obj = Wall(self,x,y,(255,0,0))
          if col == "G":
             obj = Wall(self,x,y,(0,255,0))
          if col == "B":
             obj = Wall(self,x,y,(0,0,255))
          if col == "M":
             obj = Wall(self,x,y,(255,0,255))
          if col == "C":
             obj = Wall(self,x,y,(0,255,255))
          if col == "Y":
             obj = Wall(self,x,y,(255,255,0))
             
          #spikes
          if col == "w":
             obj = Spike(self,x,y,(255,255,255))
          if col == "r":
             obj = Spike(self,x,y,(255,0,0))
          if col == "g":
             obj = Spike(self,x,y,(0,255,0))
          if col == "b":
             obj = Spike(self,x,y,(0,0,255))
          if col == "m":
             obj = Spike(self,x,y,(255,0,255))
          if col == "c":
             obj = Spike(self,x,y,(0,255,255))
          if col == "y":
             obj = Spike(self,x,y,(255,255,0))
          
             
          if obj is not None:
             self.objects.append(obj)
          x+=16
       y+=16
       x=0
Ejemplo n.º 9
0
def makeMap(map, spikes, screen, settings):  # Simple loops to set the floor

    for i in range(5):
        x = randint(settings.screenWidth, settings.screenWidth * 2)
        y = randint(0, settings.screenHeight - 300)

    for i in range(32):  # for 4 long strips of dirt blocks
        newBlock = Block(settings, screen, 1, 1, 1)
        newBlock.rect.x = 50 * i
        newBlock.rect.y = (settings.screenHeight - 50)
        map.add(newBlock)

    # for i in range(4): # for 4 long strips of dirt blocks
    #     newBlock = Block(settings, screen, 8, 1)
    #     newBlock.rect.x = 400 * i
    #     newBlock.rect.y = (settings.screenHeight - 50)
    #     map.add(newBlock)

    # newBlock = Block(settings, screen, 1, 1)
    # newBlock.rect.x = 100
    # newBlock.rect.y = (settings.screenHeight - 100)
    # map.add(newBlock)

    newBlock = Block(settings, screen, 1, 1)
    newBlock.rect.x = 350
    newBlock.rect.y = (settings.screenHeight - 100)
    map.add(newBlock)

    newBlock = Block(settings, screen, 1, 2)
    newBlock.rect.x = 400
    newBlock.rect.y = (settings.screenHeight - 150)
    map.add(newBlock)

    newBlock = Block(settings, screen, 1, 3)
    newBlock.rect.x = 450
    newBlock.rect.y = (settings.screenHeight - 200)
    map.add(newBlock)

    newBlock = Block(settings, screen, 2, 1)
    newBlock.rect.x = 1000
    newBlock.rect.y = (settings.screenHeight - 100)
    map.add(newBlock)

    newBlock = Block(settings, screen, 2, 6)
    newBlock.rect.x = 1500
    newBlock.rect.y = (settings.screenHeight - 250)
    map.add(newBlock)

    # newBlock = Block(settings, screen, 2, 1)
    # newBlock.rect.x = 800
    # newBlock.rect.y = (settings.screenHeight - 100)
    # map.add(newBlock)

    newSpike = Spike(settings, screen)
    newSpike.rect.x, newSpike.rect.bottom = 130, settings.screenHeight - 110
    spikes.add(newSpike)

    newSpike = Spike(settings, screen)
    newSpike.rect.x, newSpike.rect.bottom = 200, settings.screenHeight - 50
    spikes.add(newSpike)

    for i in range(2):
        newSpike = Spike(settings, screen)
        newSpike.rect.x, newSpike.rect.bottom = 630 + (
            i * 95), settings.screenHeight - 50
        spikes.add(newSpike)

    for i in range(3):
        newSpike = Spike(settings, screen)
        newSpike.rect.x, newSpike.rect.bottom = 830 + (
            i * 45), settings.screenHeight - 100
        spikes.add(newSpike)

    newSpike = Spike(settings, screen)
    newSpike.rect.x, newSpike.rect.bottom = 1150, settings.screenHeight - 100
    spikes.add(newSpike)
Ejemplo n.º 10
0
 def spike_generator(self):
     node = random.choice(self.nodex)
     self.pulses.add(Spike(self, node[0], node[1]))
Ejemplo n.º 11
0
EngineGlobals.textsurface = pyglet.text.Label(
    text='Arrow keys move and Ctrl or Up to jump',
    color=(255, 0, 255, 255),
    batch=EngineGlobals.main_batch,
    y=EngineGlobals.height,
    anchor_y='top')

# load kenny sprite
kenny = player.Player()
mouse_events = editor.Editor()
EngineGlobals.window.push_handlers(kenny)
EngineGlobals.window.push_handlers(mouse_events)

# load enemy sprite
enemy = enemies.Enemy()
spike = Spike([172, 0])
bandaid = Bandaid([236, 0], 'good')

# When adding to this set we are beginning to setup changable objects
# any object in this set will have its update function called
EngineGlobals.game_objects.add(screen)


# this function will be set up for pyglet to call it every update cycle, 120 times per second
# it simply calls the updated function for every object in game_objects
def main_update_callback(dt):
    physics.PhysicsSprite.collision_lists.clear()
    for obj in EngineGlobals.game_objects:
        obj.updateloop(dt)
    for delete_me in EngineGlobals.delete_us:
        EngineGlobals.game_objects.remove(delete_me)
Ejemplo n.º 12
0
from spike import Spike

with Spike('spike -d --isa=rv32i hello') as sp:
    print('A1 value before: ', hex(sp.reg(1)))
    sp.step()
    print('A1 value after:  ', hex(sp.reg(1)))
Ejemplo n.º 13
0
    def __init__(
        self, roomnumber, floorNumber
    ):  #FIXME: les couleurs dans design niveaux ne sont pas homogenes.
        self.floorNumber = floorNumber
        if floorNumber == 1:  #python doesn't have switch statements smh
            floordesignPath = 'design niveaux/lvl1.png'
        elif floorNumber == 2:
            floordesignPath = 'design niveaux/lvl2.png'
        elif floorNumber == 3:
            floordesignPath = 'design niveaux/lvl3.png'
        elif floorNumber == 4:
            floordesignPath = 'design niveaux/lvl4.png'
        elif floorNumber == 5:
            floordesignPath = 'design niveaux/lvl5.png'
        elif floorNumber == 6:
            floordesignPath = 'design niveaux/salle du boss.png'

        floordesign = pygame.image.load(floordesignPath)
        self.roomnumber = roomnumber
        self.roomBlocks = []
        for y in range(9):
            for x in range(16):
                color = floordesign.get_at((x + (roomnumber * 16), y))
                #                print("x = " + str(x+ (roomnumber*16)) + "; y = " + str(y) + "; color = " + str(color))
                if color == (0, 0, 0, 255):  # wall
                    self.roomBlocks.append(Wall((x, y)))
                elif color == (88, 88, 88, 255):  # spike
                    if floordesign.get_at(
                        (x + (roomnumber * 16), y + 1)) == (0, 0, 0, 255):
                        self.roomBlocks.append(Spike((x, y)))
                    elif floordesign.get_at(
                        (x + (roomnumber * 16) + 1, y)) == (0, 0, 0, 255):
                        self.roomBlocks.append(Spike((x, y), 1))
                    elif floordesign.get_at(
                        (x + (roomnumber * 16) - 1, y)) == (0, 0, 0, 255):
                        self.roomBlocks.append(Spike((x, y), 3))
                    elif floordesign.get_at(
                        (x + (roomnumber * 16), y - 1)) == (0, 0, 0, 255):
                        self.roomBlocks.append(Spike((x, y), 2))
                    else:
                        self.roomBlocks.append(Spike((x, y)))
                elif color == (18, 189, 99, 255):
                    self.roomBlocks.append(Coin((x, y)))
                elif color == (189, 18, 18, 255):
                    #enemy
                    if floordesign.get_at(
                        (x + (roomnumber * 16), y + 1)) == (0, 0, 0, 255):
                        if floorNumber == 1:
                            self.roomBlocks.append(Slime((x, y)))
                        elif floorNumber == 2:
                            self.roomBlocks.append(Slime2((x, y)))
                        elif floorNumber == 3:
                            self.roomBlocks.append(Slime3((x, y)))
                        elif floorNumber == 4:
                            self.roomBlocks.append(Slime4((x, y)))
                        elif floorNumber == 5:
                            self.roomBlocks.append(Slime5((x, y)))
                    else:
                        # bat
                        if floorNumber == 1:
                            self.roomBlocks.append(Bat((x, y)))
                        elif floorNumber == 2:
                            self.roomBlocks.append(Bat2((x, y)))
                        elif floorNumber == 3:
                            self.roomBlocks.append(Bat3((x, y)))
                        elif floorNumber == 4:
                            self.roomBlocks.append(Bat4((x, y)))
                        elif floorNumber == 5:
                            self.roomBlocks.append(Bat5((x, y)))
                elif color == (23, 18, 189, 255):
                    #spring
                    self.roomBlocks.append(Spring((x, y)))
                elif color == (215, 223, 1, 255):
                    self.roomBlocks.append(SpawnPoint((x, y)))
                elif color == (230, 89, 1, 255):
                    self.roomBlocks.append(Button((x, y)))
                elif color == (168, 7, 125, 255):
                    self.roomBlocks.append(PNJ((x, y)))
                elif color == (9, 199, 254):
                    self.roomBlocks.append(Table((x, y)))
                elif color == (124, 48, 201):
                    self.roomBlocks.append(Boss((x, y)))