omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular
    1. Home
    2. BurntRice

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    • Profile
    • Following 0
    • Followers 0
    • Topics 3
    • Posts 35
    • Best 1
    • Controversial 0
    • Groups 0

    BurntRice

    @BurntRice

    1
    Reputation
    587
    Profile views
    35
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    BurntRice Unfollow Follow

    Best posts made by BurntRice

    • RE: Why is my movement code wrong?

      Thank you. I’m a beginner so learning to simplify code will be really good.

      posted in Pythonista
      BurntRice
      BurntRice

    Latest posts made by BurntRice

    • RE: Help me find a way to make the lasers fire in a certain direction.
      from scene import *
      import math
      import random
      import sound
      import ui
      A = Action()
      width, height = ui.get_screen_size()
      #Setting up meteorites
      
      
      #Setting up background colour for the entire scene
      class Game(Scene):
      
          def setup(self):
              self.bg = SpriteNode('spc:BackgroundBlack')
              self.lasers = []
              self.items = []
              self.LaserTime = 0
              self.frame_counter = 0
              self.meteor = []
      
              #Creating the player
              self.Player = SpriteNode('iow:arrow_up_b_32')
              self.Player.color = (1.0, 1.0, 1.0)
              self.Player.anchor_point = (0.5, 0.5)
              self.Player.x_scale = 2/1.0
              self.Player.y_scale = 3/1.0
              self.Player.position = (512, 400)
              self.Player.rotation = 0.0
              self.add_child(self.Player)
      
              self.UpCrtl = SpriteNode('iow:arrow_up_b_32')
              self.UpCrtl.x_scale = 3.5/1.0
              self.UpCrtl.y_scale = 3.5/1.0
              self.UpCrtl.alpha = 0.5
              self.UpCrtl.position = (175, 295)
              self.add_child(self.UpCrtl)
      
              self.RightCrtl = SpriteNode('iow:arrow_right_b_32')
              self.RightCrtl.x_scale = 3.5/1.0
              self.RightCrtl.y_scale = 3.5/1.0
              self.RightCrtl.alpha = 0.5
              self.RightCrtl.position = (250, 212.5)
              self.add_child(self.RightCrtl)
      
              self.LeftCrtl = SpriteNode('iow:arrow_left_b_32')
              self.LeftCrtl.x_scale = 3.5/1.0
              self.LeftCrtl.y_scale = 3.5/1.0
              self.LeftCrtl.alpha = 0.5
              self.LeftCrtl.position = (100, 212.5)
              self.add_child(self.LeftCrtl)
      
              #The button for shooting
              self.laserButton = SpriteNode('shp:Circle')
              self.laserButton.color = ('gray')
              self.laserButton.x_scale = 3/1
              self.laserButton.y_scale = 3/1
              self.add_child(self.laserButton)
              self.laserButton.position = (1000, 212.5)
      
              #The score label
              self.score_label = LabelNode(text='Score: 0')
              self.score_label.anchor_point = (0, 0)
              self.score_label.position = (10, 790)
              self.score_label.font = ('Joystix', 30)
              self.add_child(self.score_label)
      
          #Movement code.
          def update(self):
              self.handle_button_presses()
              self.move_lasers()
              self.update_lasers()
              self.spawn_meteor()
              width, height = ui.get_screen_size()
              self.LaserTime = self.LaserTime + 1
          
          def handle_button_presses(self):
              rotationAdd = math.pi/180
              self.Player.location = self.Player.position
              for touch in self.touches.values():
                  if touch.location in self.LeftCrtl.bbox:
                      actions = [A.rotate_by(math.pi/180)]
                      self.Player.rotation = self.Player.rotation + rotationAdd
                      self.Player.run_action(A.sequence(actions))
                      
                  if touch.location in self.RightCrtl.bbox:
                      actions = [A.rotate_by(math.pi/-180)]
                      self.Player.rotation = self.Player.rotation - rotationAdd
                      self.Player.run_action(A.sequence(actions))
      
                  if touch.location in self.UpCrtl.bbox:
                      direction = Vector2(-math.sin(self.Player.rotation), math.cos(self.Player.rotation))
                      self.Player.position += direction*3 
                      self.Player.position.x %= width
                      self.Player.position.y %= height
              
          def move_lasers(self):
              for touch in self.touches.values():
                  if touch.location in self.laserButton.bbox and self.LaserTime >= 15:
                      #reset the time
                      self.LaserTime = 0
                      new_laser = SpriteNode('shp:Circle')
                      new_laser.x_scale = 0.3/1.0
                      new_laser.y_scale = 0.3/1.0
                      new_laser.position = self.Player.position
                      new_laser.rotation = self.Player.rotation
                      self.add_child(new_laser)
                      self.lasers.append(new_laser)
                      sound.play_effect('arcade:Laser_6')
                      
          def update_lasers(self):
              for l in self.lasers:
                  l.direction = Vector2(-math.sin(l.rotation), math.cos(l.rotation))*10
                  l.position += l.direction
                  if l.position.x < 0:
                      l.remove_from_parent()
                      self.lasers.remove(l)
                  if l.position.x > 1112:
                      l.remove_from_parent()
                      self.lasers.remove(l)
                  if l.position.y < 0:
                      l.remove_from_parent()
                      self.lasers.remove(l)
                  if l.position.y > 834:
                      l.remove_from_parent()
                      self.lasers.remove(l)
                      
          def spawn_meteor(self):
              self.frame_counter = self.frame_counter + 1
              if self.frame_counter >= 60:
                  self.frame_counter = 0
                  new_meteor = SpriteNode('spc:MeteorGraySmall1')
                  new_meteor.position = (random.randint(0, 1024), 834)
                  self.add_child(new_meteor)
                  self.meteor.append(new_meteor)
              
              for meteor in self.meteor:
                  meteor.position = (meteor.position.x, meteor.position.y - 5)
                  if meteor.position.y < - 100:
                      meteor.remove_from_parent()
                      self.meteor.remove(meteor)
      
      
      if __name__ == '__main__':
          run(Game(), LANDSCAPE, show_fps=True)
      
      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      I tried placing it self.update, but then it wouldn’t work.

      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      width, height = ui.get_screen_size()
      I think this is right. I did a seperate script where I print it out inside the console, and it worked.

      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      Only the wrapping.

      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      Here you go:

      def handle_button_presses(self):
              rotationAdd = math.pi/180
              self.Player.location = self.Player.position
              for touch in self.touches.values():
                  if touch.location in self.LeftCrtl.bbox:
                      actions = [A.rotate_by(math.pi/180)]
                      self.Player.rotation = self.Player.rotation + rotationAdd
                      self.Player.run_action(A.sequence(actions))
                      
                  if touch.location in self.RightCrtl.bbox:
                      actions = [A.rotate_by(math.pi/-180)]
                      self.Player.rotation = self.Player.rotation - rotationAdd
                      self.Player.run_action(A.sequence(actions))
                      
      
                  if touch.location in self.UpCrtl.bbox:
                      direction = Vector2(-math.sin(self.Player.rotation), math.cos(self.Player.rotation))
                      self.Player.position += direction*3
                      if self.Player.position.x <= 0 or self.Player.position.x >= 1112:
                          self.Player.position.x %= width
                      if self.Player.position.y <= 0 or self.Player.position.y >= 834:
                          self.Player.position.y %= height
      

      I did change the movement code a little.

      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      Whenever the Players position.x is equal to or smaller than 0 or whenever the position.x is equal to or greater than 1112, you do the remainder of the division of the screen height.

      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      I have added this:
      width, height = ui.get_screen_size()
      And then added this later:
      if self.Player.position.x <= 0 or self.Player.position.x >= 1112:
      self.Player.position.x %= width
      if self.Player.position.y <= 0 or self.Player.position.y >= 834:
      self.Player.position.y %= height
      This didn’t work. I checked if I had gotten the width and height variables in a seperate script, and I did. I am now stumped.

      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      @cvp And what about location?

      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      Wait, how do find the screen width and height? And what about location?

      posted in Pythonista
      BurntRice
      BurntRice
    • RE: Help me find a way to make the lasers fire in a certain direction.

      Oh, thanks.

      posted in Pythonista
      BurntRice
      BurntRice