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)
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)
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)
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)
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()
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)
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
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
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)
def spike_generator(self): node = random.choice(self.nodex) self.pulses.add(Spike(self, node[0], node[1]))
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)
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)))
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)))