class Level2: def __init__(self): self.text_pointers = [] self.keyboard = Controller() base.cam2dp.node().getDisplayRegion(0).setSort(-20) self.runner_font = loader.loadFont('./fonts/runner/BLADRMF_.TTF') self.p1 = player.Player() def start(self): # load self.level2 = loader.loadModel("models/CECUT.bam") self.level2.reparentTo(render) self.level2.setScale(1, 1, 1) self.level2.setPos(0,0, 0) # start camera.setPos(0.5,-8.5,4) camera.lookAt(self.level2) # start self.background = OnscreenImage( parent=render2dp, image="textures/Skunight.png") # Load an image object color = (0.8, 0.8, 0.8) #self.linfog = Fog("Scene-wide exponential Fog object") #self.linfog.setColor(*color) #self.linfog.setLinearRange(0, 35) #self.linfog.setLinearFallback(45, 160, 320) #render.setFog(self.linfog) base.setBackgroundColor(*color) self.plight = PointLight("plight") self.plight.setColor((1, 1, 1, 1)) self.plight.setAttenuation((1, 0, 1)) self.buttons() self.text = OnscreenText(font=self.runner_font, text='Que concierto deseas que se presente en el sotano de las ruinas del CECUT?', scale=0.09, pos=[ 0, 0.5], fg=[240, 10, 10, 1], shadow=[0.5, 0.5, 0.5, 0.5], shadowOffset=(0.04, 0.04),wordwrap=20) def __del__(self): print('[*] Destructor called') def buttons(self): self.option1 = DirectButton( text=("Good Bunny"), text_font=self.runner_font, scale=0.1, pos=(-0, -5, -0.75), frameTexture=None, command=self.onClick1, relief=DGG.FLAT) self.option2 = DirectButton( text=("Los Demonios de Ecatepan"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.55), frameTexture=None, command=self.onClick2, relief=DGG.FLAT) self.option3 = DirectButton( text=("La filarmonica de Ensenada"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.35), frameTexture=None, command=self.onClick3, relief=DGG.FLAT) def onClick1(self): print("[*] Click!") self.p1.change_pol(1) self.p1.change_edu(1) self.p1.change_pop(1) self.stop() def onClick2(self): print("[*] Click!") self.p1.change_pol(1) self.p1.change_edu(2) self.p1.change_pop(3) self.stop() def onClick3(self): print("[*] Click!") self.p1.change_pol(0) self.p1.change_edu(5) self.p1.change_pop(9) self.stop() def stop(self): self.p1.savefile() self.text.remove_node() self.option1.remove_node() self.option2.remove_node() self.option3.remove_node() self.background.remove_node() self.level2.remove_node() render.clearLight() self.keyboard.press('5' ) self.keyboard.release('5' ) self.__del__()
class Level4: def __init__(self): self.text_pointers = [] self.keyboard = Controller() base.cam2dp.node().getDisplayRegion(0).setSort(-20) self.runner_font = loader.loadFont('./fonts/runner/BLADRMF_.TTF') self.p1 = player.Player() def start(self): # load self.level4 = loader.loadModel("models/Picacho_diablo_11_068m.bam") self.level4.reparentTo(render) self.level4.setScale(1, 1, 1) self.level4.setPos(0, 0, 0) # start camera.setPos(-2, 2, 4) camera.lookAt(self.level4) # start self.background = OnscreenImage( parent=render2dp, image="textures/Skunight.png") # Load an image object color = (0.8, 0.8, 0.8) self.linfog = Fog("Scene-wide exponential Fog object") self.linfog.setColor(*color) self.linfog.setLinearRange(0, 35) self.linfog.setLinearFallback(45, 160, 320) render.setFog(self.linfog) base.setBackgroundColor(*color) self.plight = PointLight("plight") self.plight.setColor((1, 1, 1, 1)) self.plight.setAttenuation((1, 0, 1)) self.buttons() self.text = OnscreenText( font=self.runner_font, text= 'La comunidad sin hogares de Baja California se ha reubicado al PICACHO DEL DIABLO!', scale=0.09, pos=[0, 0.5], fg=[240, 10, 10, 1], shadow=[0.5, 0.5, 0.5, 0.5], shadowOffset=(0.04, 0.04), wordwrap=20) def __del__(self): print('[*] Destructor called') def buttons(self): self.option1 = DirectButton(text=("NUKE 'EM BOYS"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.75), frameTexture=None, command=self.onClick1, relief=DGG.FLAT) self.option2 = DirectButton(text=("construir barda"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.55), frameTexture=None, command=self.onClick2, relief=DGG.FLAT) self.option3 = DirectButton(text=("cortarles recursos e ignorar"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.35), frameTexture=None, command=self.onClick3, relief=DGG.FLAT) def onClick1(self): print("[*] Click!") self.p1.change_pol(1) self.p1.change_edu(1) self.p1.change_pop(1) self.stop() def onClick2(self): print("[*] Click!") self.p1.change_pol(1) self.p1.change_edu(2) self.p1.change_pop(3) self.stop() def onClick3(self): print("[*] Click!") self.p1.change_pol(0) self.p1.change_edu(5) self.p1.change_pop(9) self.stop() def stop(self): self.p1.savefile() self.text.remove_node() self.option1.remove_node() self.option2.remove_node() self.option3.remove_node() self.background.remove_node() self.level4.remove_node() render.clearLight() self.keyboard.press('7') self.keyboard.release('7') self.__del__()
class Level3: def __init__(self): self.text_pointers = [] self.keyboard = Controller() base.cam2dp.node().getDisplayRegion(0).setSort(-20) self.runner_font = loader.loadFont('./fonts/runner/BLADRMF_.TTF') self.p1 = player.Player() def start(self): # load self.level3 = loader.loadModel("models/Estacionamiento_Long.bam") self.level3.reparentTo(render) self.level3.setScale(1, 1, 1) self.level3.setPos(0, 0, 0) # start camera.setPos(-2, 2, 4) camera.lookAt(self.level3) # start self.background = OnscreenImage( parent=render2dp, image="textures/Skunight.png") # Load an image object color = (0.8, 0.8, 0.8) self.linfog = Fog("Scene-wide exponential Fog object") self.linfog.setColor(*color) self.linfog.setLinearRange(0, 35) self.linfog.setLinearFallback(45, 160, 320) render.setFog(self.linfog) base.setBackgroundColor(*color) self.plight = PointLight("plight") self.plight.setColor((1, 1, 1, 1)) self.plight.setAttenuation((1, 0, 1)) self.buttons() self.text = OnscreenText(font=self.runner_font, text='Propone el uso de la vieja Monumental', scale=0.09, pos=[0, 0.5], fg=[240, 10, 10, 1], shadow=[0.5, 0.5, 0.5, 0.5], shadowOffset=(0.04, 0.04), wordwrap=20) def __del__(self): print('[*] Destructor called') def buttons(self): self.option1 = DirectButton(text=("un parque"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.75), frameTexture=None, command=self.onClick1, relief=DGG.FLAT) self.option2 = DirectButton(text=("una maquila solar"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.55), frameTexture=None, command=self.onClick2, relief=DGG.FLAT) self.option3 = DirectButton(text=("un terreno valdio"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.35), frameTexture=None, command=self.onClick3, relief=DGG.FLAT) def onClick1(self): print("[*] Click!") self.p1.change_pol(1) self.p1.change_edu(1) self.p1.change_pop(1) self.stop() def onClick2(self): print("[*] Click!") self.p1.change_pol(1) self.p1.change_edu(2) self.p1.change_pop(3) self.stop() def onClick3(self): print("[*] Click!") self.p1.change_pol(0) self.p1.change_edu(5) self.p1.change_pop(9) self.stop() def stop(self): self.p1.savefile() self.text.remove_node() self.option1.remove_node() self.option2.remove_node() self.option3.remove_node() self.background.remove_node() self.level3.remove_node() render.clearLight() self.keyboard.press('6') self.keyboard.release('6') self.__del__()
class Level1: def __init__(self): self.text_pointers = [] self.keyboard = Controller() base.cam2dp.node().getDisplayRegion(0).setSort(-20) self.runner_font = loader.loadFont('./fonts/runner/BLADRMF_.TTF') self.p1 = player.Player() def start(self): self.level1 = loader.loadModel("models/Campestre_light.bam") self.level1.reparentTo(render) self.level1.setScale(1, 1, 1) self.level1.setPos(0, 0, 0) camera.setPos(-2, 2, 4) camera.lookAt(self.level1) self.background = OnscreenImage( parent=render2dp, image="textures/Skunight.png") # Load an image object color = (0.8, 0.8, 0.8) self.linfog = Fog("Scene-wide exponential Fog object") self.linfog.setColor(*color) self.linfog.setLinearRange(0, 35) self.linfog.setLinearFallback(45, 160, 320) render.setFog(self.linfog) base.setBackgroundColor(*color) self.plight = PointLight("plight") self.plight.setColor((1, 1, 1, 1)) self.plight.setAttenuation((1, 0, 1)) self.buttons() self.text = OnscreenText( font=self.runner_font, text= 'El emperador Hank convirtio el campo Campestre en un campo de practica para Xolos. Ahora eres alcalde:', scale=0.09, pos=[0, 0.5], fg=[240, 10, 10, 1], shadow=[0.5, 0.5, 0.5, 0.5], shadowOffset=(0.04, 0.04), wordwrap=20) def __del__(self): print('[*] Destructor called') def buttons(self): self.option1 = DirectButton(text=("dejarlo"), text_font=self.runner_font, scale=0.1, pos=(-1, -5, -0.75), frameTexture=None, command=self.onClick1, relief=DGG.FLAT) self.option2 = DirectButton(text=("quemarlo"), text_font=self.runner_font, scale=0.1, pos=(0, -5, -0.75), frameTexture=None, command=self.onClick2, relief=DGG.FLAT) self.option3 = DirectButton(text=("adaptarlo"), text_font=self.runner_font, scale=0.1, pos=(1, -5, -0.75), frameTexture=None, command=self.onClick3, relief=DGG.FLAT) def onClick1(self): print("[*] Click!") self.p1.change_pol(1) self.p1.change_edu(1) self.p1.change_pop(1) self.stop() def onClick2(self): print("[*] Click!") self.p1.change_pol(1) self.p1.change_edu(2) self.p1.change_pop(3) self.stop() def onClick3(self): print("[*] Click!") self.p1.change_pol(0) self.p1.change_edu(5) self.p1.change_pop(9) self.stop() def stop(self): self.p1.savefile() self.text.remove_node() self.option1.remove_node() self.option2.remove_node() self.option3.remove_node() self.background.remove_node() self.level1.remove_node() render.clearLight() self.keyboard.press('4') self.keyboard.release('4') self.__del__()
class Game(ShowBase, Player, Walls): def __init__(self): ShowBase.__init__(self) Player.__init__(self) Walls.__init__(self) Road.__init__(self) self.all_car = [] self.carN = 1 self.car_y = [-6, -4, -2, 0, 2, 4, 6, 8, 10] self.car_x = [-25, 25] self.speed = [.1, .2, .3, .4] self.score = 0 self.highscore = 0 self.output = "Score: " + str(self.score) self.difficulty = .3 self.font = loader.loadFont('Fonts/SigmarOne-Regular.ttf') self.collision = False self.env = loader.loadModel("Models/env.egg.pz") self.env.reparentTo(self.render) self.env.setScale(30) self.traverser = CollisionTraverser('traverser') base.cTrav = self.traverser self.colEvent = CollisionHandlerEvent() self.traverser.addCollider(self.player_collision, self.colEvent) self.colEvent.addInPattern("into-%in") self.colEvent.addOutPattern("out-%in") for name in ["Twall", "Bwall", "Rwall", "Lwall"]: self.accept(f"into-{name}", self.Check) self.accept(f"out-{name}", self.Out) base.setBackgroundColor(.1, .1, .1) base.disableMouse() camera.setPosHpr(0, -35, 20, 0, -30, 0) taskMgr.add(self.Move, "move_player") taskMgr.add(self.car_check, "car_check") self.carSeq = Sequence(Func(self.MakeCar), Wait(self.difficulty)) self.carSeq.loop() self.text = OnscreenText(text=self.output, pos=(1, .9), scale=.1, mayChange=1, font=self.font, fg=(1, .5, 0, 1)) self.idle.play() self.pause(False) def Check(self, coll): if coll.getIntoNodePath().getName() == "Twall": self.wOn = False if coll.getIntoNodePath().getName() == "Rwall": self.dOn = False if coll.getIntoNodePath().getName() == "Bwall": self.sOn = False if coll.getIntoNodePath().getName() == "Lwall": self.aOn = False def Out(self, coll): if coll.getIntoNodePath().getName() == "Twall": self.wOn = True if coll.getIntoNodePath().getName() == "Rwall": self.dOn = True if coll.getIntoNodePath().getName() == "Bwall": self.sOn = True if coll.getIntoNodePath().getName() == "Lwall": self.aOn = True def MakeCar(self): shuffle(self.car_y) shuffle(self.car_x) shuffle(self.speed) self.all_car.append( Car(self.speed[0], self.car_x[0], self.car_y[0], str(self.carN))) self.carN += 1 def car_check(self, task): for car in self.all_car: if car.x < -25 or car.x > 25: self.all_car.remove(car) car.car.removeNode() taskMgr.remove('move_car' + car.car_num) self.score += 1 self.output = "Score: " + str(self.score) self.text.setText(self.output) if not (self.collision): self.accept(f"into-{car.name}", self.collide_car) return Task.cont def collide_car(self, coll): for car in self.all_car: if car.carNode != coll.getIntoNodePath(): car.car.removeNode() taskMgr.remove('move_car' + car.car_num) self.collision = True self.pause() def pause(self, coll=True): self.carSeq.pause() self.walk.stop() taskMgr.remove("move_player") if self.score > self.highscore: self.highscore = self.score self.text.setPos(10, 10) if coll: self.dead_text = OnscreenText( text= f"You Have Been Hit \n Score: {self.score} \n Highscore: {self.highscore} \n \n \n Press R to play again \n Press F to exit", pos=(0, .4), scale=.1, mayChange=1, fg=(.1, .7, .1, 1), font=self.font) else: self.dead_text = OnscreenText( text=f"Dodge the Cars! \n \n Press R to start", pos=(0, .4), scale=.1, mayChange=1, fg=(0, .6, 1, 1), font=self.font) self.accept("r", self.un_pause) self.accept("f", self.exit) def un_pause(self): for car in self.all_car: car.car.removeNode() for car in self.all_car: self.all_car.remove(car) taskMgr.remove("pause") taskMgr.add(self.Move, "move_player") self.carSeq.resume() self.ignore("r") self.ignore("f") self.score = 0 self.dead_text.remove_node() self.output = "Score: " + str(self.score) self.text.setText(self.output) self.text.setPos(1.1, .9) self.collision = False def exit(self): finalizeExit()