def test_loseGameReturnsTrueWhenThereIsAnOpponentInGame(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n" ) file.close() gun = Gun() gun.readIDFile() file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=4\nusername=Thomas\n" ) file.close() gun2 = Gun() gun2.readIDFile() mydb = connect.connect() cursor = mydb.cursor() sql = "INSERT INTO Games (current_state, winner, game_date) VALUES (2, 0, (NOW() - INTERVAL 4 HOUR + INTERVAL 11 MINUTE - INTERVAL 22 SECOND))" cursor.execute(sql) mydb.commit() gun.joinGame() gun2.joinGame() self.assertTrue(gun2.loseGame()) mydb.close()
def test_attack_by_gun(self): # setup knight = self.create_knight(Gun()) # parameterized creation method # exercise pain = knight.attack_power() # verify self.assertEqual(pain, Gun().attack_power())
def fve_gun(exp, nom, plt): from fit import Opt from gun import magic from gun import Gun fig = plt.figure('fve_gun',figsize=fig_y_size(9)) p2f = magic.newton2dyne*magic.area/1e11 opt = Opt( nom.eos, {'gun':nom.gun,'stick':nom.stick}, {'gun':exp.vt,'stick':exp.stick_data}) cs,costs = opt.fit(max_iter=5) print('costs={0}'.format(costs)) opt_gun = Gun(opt.eos) nom.gun.eos = nom.eos # Restore nominal eos after optimization t2vs = [Gun(eos).fit_t2v() for eos in [opt.eos.new_c(c) for c in cs]] e = [exp.v - t2v(exp.t) for t2v in t2vs[1:]] data = {'nominal':( (exp.x, nom.eos(exp.x)*p2f, 'f'), (exp.x, nom.gun.x_dot(exp.x)/magic.cm2km, 'v'))} data['experimental']=( (exp.x, exp.eos(exp.x)*p2f, 'f'), (exp.x, exp.gun.x_dot(exp.x)/magic.cm2km, 'v')) data['fit']=( (exp.x, opt.eos(exp.x)*p2f, 'f'), (exp.x, opt_gun.x_dot(exp.x)/magic.cm2km, 'v')) cm = r'$x/(\rm{cm})$' mu_sec = r'$t/(\mu\rm{sec})$' f_key = r'$f/({\rm dyn}\cdot 10^{11})$' v_key = r'$v/(\rm{km/s})$' e_key = r'$\epsilon_k/(\rm{m/s})$' ax_d = { 'f':{'ax':fig.add_subplot(3,1,1), 'l_x':cm, 'l_y':f_key, 'loc':'upper right'}, 'v':{'ax':fig.add_subplot(3,1,2), 'l_x':cm, 'l_y':v_key, 'loc':'lower right'}, 'e':{'ax':fig.add_subplot(3,1,3), 'l_x':mu_sec, 'l_y':e_key, 'loc':'upper right'} } for mod,xyn in data.items(): for x,y,name in xyn: if mod == 'experimental': ax_d[name]['ax'].plot(x,y,'r-.',label=r'$\rm %s$'%mod) else: ax_d[name]['ax'].plot(x,y,label=r'$\rm %s$'%mod) for i in range(len(e)): ax_d['e']['ax'].plot(exp.t*1e6,e[i]/100,label=r'$\epsilon_%d$'%(i+1)) for name,d in ax_d.items(): d['ax'].legend(loc=ax_d[name]['loc']) d['ax'].set_xlabel(d['l_x']) d['ax'].set_ylabel(r'$%s$'%name) if 'l_y' in d: d['ax'].set_ylabel(d['l_y']) return fig
def __init__(self, name="Queen of the Skies"): self.name = name self.missions_completed = 0 self.status = BOMBER_SAFE self.crew = { BOMBARDIER: Crew(BOMBARDIER), NAVIGATOR: Crew(NAVIGATOR), PILOT: Crew(PILOT), COPILOT: Crew(COPILOT), ENGINEER: Crew(ENGINEER), RADIO_OPERATOR: Crew(RADIO_OPERATOR), BALL_GUNNER: Crew(BALL_GUNNER), PORT_WAIST_GUNNER: Crew(PORT_WAIST_GUNNER), STBD_WAIST_GUNNER: Crew(STBD_WAIST_GUNNER), TAIL_GUNNER: Crew(TAIL_GUNNER) } self.guns = { NOSE: Gun(NOSE, self.crew[BOMBARDIER], 15), PORT_CHEEK: Gun(PORT_CHEEK, self.crew[NAVIGATOR], 10), STBD_CHEEK: Gun(STBD_CHEEK, self.crew[NAVIGATOR], 10), TOP_TURRET: Gun(TOP_TURRET, self.crew[ENGINEER], 16), RADIO: Gun(RADIO, self.crew[RADIO_OPERATOR], 10), BALL_TURRET: Gun(BALL_TURRET, self.crew[BALL_GUNNER], 20), PORT_WAIST: Gun(PORT_WAIST, self.crew[PORT_WAIST_GUNNER], 20), STBD_WAIST: Gun(STBD_WAIST, self.crew[STBD_WAIST_GUNNER], 20), TAIL_TURRET: Gun(TAIL_TURRET, self.crew[TAIL_GUNNER], 23), } self.damage = []
def test_loseGameCorrectlyUpdatesWinnerStats(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n" ) file.close() gun = Gun() gun.readIDFile() file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=4\nusername=Thomas\n" ) file.close() gun2 = Gun() gun2.readIDFile() mydb = connect.connect() cursor = mydb.cursor() sql = "INSERT INTO Games (current_state, winner, game_date) VALUES (2, 0, (NOW() - INTERVAL 4 HOUR + INTERVAL 11 MINUTE - INTERVAL 22 SECOND))" cursor.execute(sql) mydb.commit() sql = "SELECT * FROM Guns WHERE gun=3" cursor.execute(sql) myresult = cursor.fetchall() oldGunWins = myresult[0][1] sql = "SELECT * FROM Players WHERE username='******'" cursor.execute(sql) myresult = cursor.fetchall() oldPlayerWins = myresult[0][1] gun.joinGame() gun2.joinGame() gun2.loseGame() sql = "SELECT * FROM Guns WHERE gun=3" cursor.execute(sql) myresult = cursor.fetchall() newGunWins = myresult[0][1] sql = "SELECT * FROM Players WHERE username='******'" cursor.execute(sql) myresult = cursor.fetchall() newPlayerWins = myresult[0][1] self.assertEqual((oldGunWins + 1), newGunWins) self.assertEqual((oldPlayerWins + 1), newPlayerWins) mydb.close()
def game(): pygame.init() #Initialize Pygame pygame.mixer.pre_init(44100, -16, 2, 2048) # Reduce Lagging for the Music pygame.mixer.init() #Initialize Mixer for Background Music pygame.mixer.music.load('bgm.wav') #Load the BGM File pygame.mixer.music.play(-1) #Play the BGM Infinitely screen=pygame.display.set_mode((500,650)) #Set the Pygame Window pygame.display.set_caption("STARHEAD EXTERMINATOR") #Set the Window Caption #Call All the Classes txt = "DONT SHOOT THE GREEN ONE" button = Button(screen,txt) stats = Stats() gun = Gun(screen) enemy = Enemy(screen,stats) host = Hostage(screen,stats) score = Score(screen, stats) enemies = Group() hostage = Group() #Start the Game Loop while True: gf.firstscreen(screen,button,stats,gun,enemies,hostage,score) #First Display of the Game if stats.game_active: #Start when the Player Click the Button gf.gametrue(screen,stats,gun,enemies,hostage,score) #Update and Behaviour of Objects in the Game gf.update_screen(screen,gun,enemies,hostage,button,stats) #Update the Screen and Flip
def test_readIDFileReturnsFalseFromPoorlyFormattedFile(self): file = open('gunid', 'r+') file.truncate() file.write("not a good file") file.close() gun = Gun() self.assertFalse(gun.readIDFile())
def test_joinGameCorrectlyAddsUserIntoGame(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n" ) file.close() gun = Gun() gun.readIDFile() mydb = connect.connect() cursor = mydb.cursor() sql = "INSERT INTO Games (current_state, winner, game_date) VALUES (1, 0, (NOW() - INTERVAL 4 HOUR + INTERVAL 11 MINUTE - INTERVAL 22 SECOND))" cursor.execute(sql) mydb.commit() gun.joinGame() sql = "SELECT * FROM (Games INNER JOIN Game_Users ON Games.id = Game_Users.game_id) WHERE Games.current_state = 1" cursor.execute(sql) myresult = cursor.fetchall() self.assertEqual(len(myresult), 1) #only one row added to database self.assertEqual(myresult[0][5], 3) #gunid is 3 self.assertEqual(myresult[0][6], "Benjamin") #username is Benjamin sql = "UPDATE Games SET current_state=0 WHERE current_state=1" cursor.execute(sql) mydb.commit() mydb.close()
def test_fireShotCorrectlyIncrementsGunShotsFiredInDatabase(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n" ) file.close() gun = Gun() gun.readIDFile() mydb = connect.connect() cursor = mydb.cursor() sql = ("SELECT * FROM Guns " "WHERE gun='{}'").format(gun.id) cursor.execute(sql) myresult = cursor.fetchall() oldShots = myresult[0][3] gun.fireShot() sql = ("SELECT * FROM Guns " "WHERE gun='{}'").format(gun.id) cursor.execute(sql) myresult = cursor.fetchall() newShots = myresult[0][3] mydb.close() self.assertEqual((oldShots + 1), newShots)
def init(self): self.bgColor = (11, 102, 35) Player.init() self.player = Player(self.width / 2, self.height / 2) self.playerGroup = pygame.sprite.Group(self.player) Gun.init() self.guns = pygame.sprite.Group() for i in range(3): x = random.randint(0, self.width) y = random.randint(0, self.height) self.guns.add(Gun(x, y)) objectGenerator.init() self.objectSet = pygame.sprite.Group() self.objectCoor = [(0,0)] self.test = objectGenerator(0, 0) while len(self.objectCoor) < 8: x = random.randint(0, self.width) y = random.randint(0, self.height) if not self.isTouching(x, y): self.objectCoor.append((x,y)) self.objectSet.add(objectGenerator(x, y)) self.bullets = pygame.sprite.Group() self.roads = set() number = random.randint(1, 2) for i in range(number): self.roads.add(self.selectRoads())
def __init__(self, gs=None, center=None, angle=None, target=None, interval = None): """ Enemy class: sort of a hybrid between the user tank and the pellets. It is a tank, and the gun follows the user at all time. But it changes directions when it hits another enemy or a wall """ pygame.sprite.Sprite.__init__(self) self.gs = gs self.angle = angle self.target = target self.center = center self.image = pygame.image.load("imgs/tank3.png") self.orig_image = pygame.image.load("imgs/tank3.png") self.image = pygame.transform.scale(self.image, (40, 40)) self.orig_image = pygame.transform.scale(self.orig_image, (40, 40)) self.rect = self.image.get_rect() self.rect.center = self.center self.dx = math.cos(self.angle)*2 self.dy = math.sin(self.angle)*-2 self.exploded = False self.tofire = False self.gun = Gun(self.rect.center, self.gs) #random interval at which to fire at user self.fire_interval = interval self.fire_timer = 0
def __init__(self, motor_range, steppers, friendly_mode=True, trigger_pin=None, micro_pins=None, micro_pos=None, show_video=False): global has_motors self.friendly_mode = friendly_mode self.micro_pins = micro_pins self.micro_pos = micro_pos self.motor_range = motor_range self.stepper_x = steppers[0] self.stepper_y = steppers[1] self.override_motion = False atexit.register(self.__turn_off_motors) if has_motors: self.gun = Gun(trigger_pin, self.stepper_x, self.stepper_y, friendly_mode) else: self.gun = dummy.Gun(self.stepper_x, self.stepper_y, friendly_mode) self.motion_sensor = MotionSensor(self.__on_motion, self.__on_no_motion, show_video=show_video)
def __init__(self, center, gs=None): pygame.sprite.Sprite.__init__(self) self.gs = gs self.image = pygame.image.load("imgs/tank1.png") self.orig_image = pygame.image.load("imgs/tank1.png") # tank is a tad smaller than gun bc collision detecting self.image = pygame.transform.scale(self.image, (40, 40)) self.orig_image = pygame.transform.scale(self.orig_image, (40, 40)) self.rect = self.image.get_rect() self.rect.center = center self.fire_x = 0 self.fire_y = 0 self.fire_timer = 0 self.tofire = False self.mx = 0 self.my = 0 self.life = True #attach gun, has to be a different part in order # to move around seemlessly (as opposed to a weird # rotating square) self.gun = Gun(self.rect.center, self.gs) self.hold = False self.key = 0
def __init__(self): global registry self.registry = registry self.timer = int(time.time()) self.notices = set() self.gun = Gun(self.registry) self.hitDucks = [False for i in range(10)] self.hitDuckIndex = 0
def test_validateReturnsTrueWhenInputIsProperlyFormatted(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n" ) file.close() gun = Gun() self.assertTrue(gun.readIDFile())
def test_validateReturnsFalseWhenPlayerIsNotRegistered(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=None\n" ) file.close() gun = Gun() self.assertFalse(gun.readIDFile())
def test_validateReturnsFalseWhenIdIs0(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=0\nusername=Benjamin\n" ) file.close() gun = Gun() self.assertFalse(gun.readIDFile())
def start(self): self.clear_vars() self.player = Player(self.player_list, self.token_list, Gun(self.list_allie_shots, Bullet)) self.player_list.add(self.player) self.player.set_pos(globalvars.x, globalvars.y) self.health.link_sprite(self.player) self.inputmanager = self.parent.inputmanager self.register_inputs() self.loop()
def test_checkGameReturnsFalseWhenThereIsNoActiveGame(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n" ) file.close() gun = Gun() gun.readIDFile() self.assertFalse(gun.checkGame())
def test_readIDFileAssignsCorrectValuesFromProperlyFormattedFile(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n" ) file.close() gun = Gun() gun.readIDFile() self.assertEqual(gun.id, 3) self.assertEqual(gun.username, "Benjamin")
def __init__(self): """ Constructor for the Trigger class. Postconditions: The gunid and user name will be assigned to a "gun" (to hardware). """ self.TRIGGER = 19 GPIO.setmode(GPIO.BCM) GPIO.setup(self.TRIGGER, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) self.gun = Gun() self.gun.readIDFile() self.shotID = "Shot" + str(self.gun.id).zfill(2)
def main(): bullets = [Bullet(), Bullet(), Bullet(), Bullet(), Bullet()] box = Box(bullets, 5) gun = Gun(box) per = Person(gun) #开枪 per.fire() per.fire() per.fire() per.fire() per.fire() per.changeBox(5) per.fire()
def __init__(self): super().__init__(title="Game", width=15 * 64, height=9 * 64, fullscreen=False) # Load background image self.background_sprite = arcade.Sprite("assets/background.png", center_x=self.width / 2, center_y=self.height / 2) self.static_sprites = arcade.SpriteList(is_static=True) self.static_sprites.append(self.background_sprite) # Create game objects self.test_gun = Gun(300, 200) self.bullets = [] self.player = Player(50, 50)
def __init__(self, i, x, y, s, t=0): self.identity = i self.x = x self.y = y self.size = s self.t_num = t self.box = pygame.Rect((self.x, self.y), (self.size, self.size)) self.level = 1 self.__c_mod = 1.0 # gets smaller self.coolness = 0 # 0 means ready to shoot self.__r_mod = 1.0 # gets bigger self.__p_mod = 1.0 # gets bigger self.__s_mod = 1.0 # gets bigger self.gun = Gun((self.x, self.y), s, t, tower_colors[self.t_num], self.level) self.upgrade_cost = 10 self.follow_mouse = False self.show_r = False self.font = pygame.font.SysFont('Century Gothic', 12)
def __init__(self, setting: settings): self.velocity = pygame.Vector2(0, 0) self.sprite_sheet = spriteSheet(setting.ship_filename, 5, 4) self.position = Vector2( setting.screen_width / 2 - self.sprite_sheet.cell_width / 2, setting.screen_height - self.sprite_sheet.cell_height) self.rect = pygame.Rect(self.position.x, self.position.y, self.sprite_sheet.cell_width, self.sprite_sheet.cell_height) self.ship_speed = setting.ship_speed self.life = setting.ship_life self.setting = setting self.gun = Gun(setting) self.moving_right = False self.moving_left = False self.score = score(0, Vector2()) pygame.font.init() self.font = pygame.font.SysFont('Comic Sans', 24, True)
def __init__(self): """Initialize the game and create game resources.""" pygame.init() self.settings = Settings() self.screen = pygame.display.set_mode( (self.settings.screen_width, self.settings.screen_height)) pygame.display.set_caption("Hit the Target") # self.screen_rect = self.screen.get_rect() # Create an instance to store game statistics. self.stats = GameStats(self) self.target = Target(self) self.gun = Gun(self) self.bullets = pygame.sprite.Group() # Make the Play button. self.play_button = Button(self, "Play")
def __init__(self, center, gs=None): pygame.sprite.Sprite.__init__(self) self.gs = gs self.image = pygame.image.load("imgs/tank2.png") self.orig_image = pygame.image.load("imgs/tank2.png") # tank is a tad smaller than gun bc collision detecting self.image = pygame.transform.scale(self.image, (40, 40)) self.orig_image = pygame.transform.scale(self.orig_image, (40, 40)) self.rect = self.image.get_rect() self.rect.center = center self.fire_x = 0 self.fire_y = 0 self.fire_timer = 0 self.tofire = False self.mx = 0 self.my = 0 self.gun = Gun(self.rect.center, self.gs) self.hold = False self.key = 0
def __init__(self, setting: settings, shoot_sound): self.shoot_sound = shoot_sound self.fleet = list() self.move_speed = setting.alien_speed self.creep_speed = setting.creep_speed self.gun = Gun(setting) self.setting = setting self.saucer = Saucer(setting, Vector2(-64, 64 * 2)) for i in range(10): self.fleet.append(Squid(setting, pygame.Vector2(70 * i, 70))) for i in range(10): self.fleet.append(Squid(setting, pygame.Vector2(70 * i, 70 * 2))) for i in range(10): self.fleet.append(Jelly(setting, pygame.Vector2(70 * i, 70 * 3))) for i in range(10): self.fleet.append(Jelly(setting, pygame.Vector2(70 * i, 70 * 4))) for i in range(10): self.fleet.append(Crab(setting, pygame.Vector2(70 * i, 70 * 5))) for i in range(10): self.fleet.append(Crab(setting, pygame.Vector2(70 * i, 70 * 6)))
def test_checkGameReturnsTrueWhenThereIsAJoiningGame(self): file = open('gunid', 'r+') file.truncate() file.write( "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n" ) file.close() gun = Gun() gun.readIDFile() mydb = connect.connect() cursor = mydb.cursor() sql = "INSERT INTO Games (current_state, winner, game_date) VALUES (1, 0, (NOW() - INTERVAL 4 HOUR + INTERVAL 11 MINUTE - INTERVAL 22 SECOND))" cursor.execute(sql) mydb.commit() self.assertTrue(gun.checkGame()) sql = "UPDATE Games SET current_state=0 WHERE current_state=1" cursor.execute(sql) mydb.commit() mydb.close()
def __init__(self, texture, speed): super().__init__() self.sr = SpriteRenderer(self, texture) self.rb = Rigidbody(self) self.event_listener = EventListener(self, self.explode) self.event = GameEvent(self) self.add_components([self.rb, self.sr, self.event_listener]) self.gun = Gun() self.gun.transform.set_parent(self.transform) self.gun.transform.local_position = pygame.math.Vector2(0, -32) self.instantiate(self.gun) self.speed = speed self.transform.size = pygame.math.Vector2(3,3) self.cooldown = 0.5 self.cooldown_timer = 0 self.vel = pygame.math.Vector2(0,0) self.acc = 100 self.dec = 0.8