omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    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.


    Frame for tetris

    Pythonista
    6
    60
    19404
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • cvp
      cvp @Karina last edited by cvp

      @Karina said:

      But here there’s no vertical grey lines, though they in init.

      Put the draw lines before the super().init....

                  if stroke_color == 'grey':
                      print(stroke_color)
                      d = int(rect_w/30)
                      for l in range(int(rect_w/d)):
                          x = l*d
                          path.move_to(x, 0)
                          path.line_to(x, rect_h)
         
                  super().__init__(path,
                                   fill_color='white',
                                   stroke_color=stroke_color,
                                   parent=parent,
                                   *args, **kwargs) 
      

      1 Reply Last reply Reply Quote 0
      • cvp
        cvp @Karina last edited by cvp

        @Karina 😥 and a small correction

                #grey_rect = Board(line_width=2, parent=self, position=(sw/2, sh/2))
                board = Board(stroke_color='purple', line_width=10, parent=self, position=(sw/3, sh/2))
                grey_rect = Board(line_width=2, parent=self, position=(sw/3, sh/2)) 
        

        Karina 1 Reply Last reply Reply Quote 0
        • Karina
          Karina @cvp last edited by Karina

          @cvp that correction I can do 😅
          It was at the beginning before super, but somehow didn’t work. So I put after. And what changes if it’s after super?

          cvp 1 Reply Last reply Reply Quote 0
          • Karina
            Karina last edited by

            @cvp By the way do you know how to allow multi_touch? This for another thing that is nearly ready

            cvp mikael 2 Replies Last reply Reply Quote 0
            • cvp
              cvp @Karina last edited by

              @Karina said:

              And what changes if it’s after super?

              If you do "after super().init..", you already have passed the path to node creation and all lines are added to the object path but not to the path of the node it-self

              1 Reply Last reply Reply Quote 0
              • cvp
                cvp @Karina last edited by cvp

                @Karina said:

                how to allow multi_touch?

                A "must have" of @mikael : gestures

                1 Reply Last reply Reply Quote 0
                • mikael
                  mikael @Karina last edited by

                  @Karina, is this recent thread relevant to your multi-touch question?

                  Karina 1 Reply Last reply Reply Quote 0
                  • Karina
                    Karina @mikael last edited by

                    @mikael yes, I want to do smth like that. I’ll also look in github, but I didn’t use it before

                    1 Reply Last reply Reply Quote 0
                    • Karina
                      Karina last edited by

                      @cvp @mikael sorry, I have another problem. I still can’t writing smth by myself🙂

                      I tried here to add a block on the board, but it doesn’t show it. But prints the position

                      from scene import *
                      import random
                      import arrows
                      
                      sw, sh = get_screen_size()
                      rect_w = sw/3  #343.33
                      rect_h = sh-100  #668
                      side = int(rect_w/10)
                      colors = ['red']
                      
                      class Board(ShapeNode):
                      	def __init__(self, stroke_color='lightgrey', line_width=1, parent=None, *args, **kwargs):
                      			path = ui.Path.rect(0, 0, rect_w, rect_h)
                      			path.line_width = line_width
                      			
                      			if stroke_color == 'lightgrey':
                      				d = int(rect_w/10)
                      				for l in range(int(rect_w/d)):
                      					x = l*d
                      					path.move_to(x, 0)
                      					path.line_to(x, rect_h)
                      			
                      			super().__init__(path,
                      							 fill_color='white',
                      							 stroke_color=stroke_color,
                      							 parent=parent,
                      							 *args, **kwargs)
                      		
                      
                      
                      class Game(Scene):
                      	def setup(self):
                      		self.background_color = 'white'
                      		grey_rect = Board(line_width=2, parent=self, position=(sw/3, sh/2), z_position=0)
                      		self.board = Board(stroke_color='purple', line_width=15, parent=self, position=(sw/3, sh/2), 	z_position=-1)
                      		self.add_buttons()
                      		self.add_figure()
                      		
                      	def add_buttons(self):
                      		ars = arrows.Main()
                      		self.present_modal_scene(ars)
                      		
                      	def add_figure(self):
                      		x = random.choice(range(10)) * side
                      		y = rect_h
                      		block = SpriteNode('pzl:Yellow7', (x, y), z_position=1, size=Size(side, side), parent=self.board)
                      		print(block.position)
                      
                      
                      run(Game())  ```
                      cvp 2 Replies Last reply Reply Quote 0
                      • cvp
                        cvp @Karina last edited by cvp

                        @Karina try the gray_rect as parent for yours blocks because it is above the board

                                self.grey_rect = Board(line_width=2, parent=self, position=(sw/3, sh/2), z_position=0) 
                        

                        and don't forget child position is versus the center of the parent node

                            def add_figure(self):
                                r = random.choice(range(10)) 
                                x = r * side - rect_w/2 + side/2
                                y = rect_h/2 - side/2
                                block = SpriteNode('pzl:Yellow7', position=(x, y), size=Size(side, side), parent=self.grey_rect)
                                
                                #print(block.position)
                        

                        1 Reply Last reply Reply Quote 0
                        • cvp
                          cvp @Karina last edited by

                          @Karina Here, if you let self.board as parent and use r = 10, you can see that your block is partially hidden by the grid

                                  r = 10
                                  x = r * side - rect_w/2 + side/2
                                  y = rect_h/2 - side/2
                                  block = SpriteNode('pzl:Yellow7', position=(x, y), size=Size(side, side), parent=self.board)#self.grey_rect)
                          

                          1 Reply Last reply Reply Quote 0
                          • Karina
                            Karina last edited by

                            @cvp so the center is (0, 0)?

                            cvp 2 Replies Last reply Reply Quote 0
                            • cvp
                              cvp @Karina last edited by

                              @Karina said:

                              so the center is (0, 0)?

                              Yes

                              1 Reply Last reply Reply Quote 0
                              • cvp
                                cvp @Karina last edited by

                                @Karina read also the doc about anchor_point

                                1 Reply Last reply Reply Quote 0
                                • Karina
                                  Karina last edited by Karina

                                  @cvp did so that the block moves down, but for ⬅️➡️ my touch_began doesn’t work. I did this

                                  def touch_began(self, touch):
                                  		print('touch_began') 
                                  

                                  And nothing in the console

                                  cvp 2 Replies Last reply Reply Quote 0
                                  • cvp
                                    cvp @Karina last edited by cvp

                                    @Karina where did you insert your touch_began? I put it in the game class and print is ok

                                    class Game(Scene):
                                        def touch_began(self, touch):
                                            print('touch_began') 
                                        def setup(self): 
                                    .
                                    .
                                    .```
                                    1 Reply Last reply Reply Quote 0
                                    • cvp
                                      cvp @Karina last edited by

                                      @Karina I want to add that, sincerely, I don't have any experience in scene module. I always have to try/test before that I can answer something. By example, for position, I've tried some values before to be able to answer something intelligent 😇

                                      1 Reply Last reply Reply Quote 0
                                      • Karina
                                        Karina last edited by

                                        @cvp it’s in the game class that inherited scene. And update in the class he sees

                                        1 Reply Last reply Reply Quote 0
                                        • Karina
                                          Karina last edited by Karina

                                          from scene import *
                                          import random
                                          import arrows
                                          
                                          sw, sh = get_screen_size()
                                          rect_w = sw/3  #343.33
                                          rect_h = 612 #668
                                          side = int(rect_w/10)
                                          colors = ['red']
                                          
                                          
                                          class Board(ShapeNode):
                                          	def __init__(self, stroke_color='lightgrey', line_width=1, parent=None, *args, **kwargs):
                                          			path = ui.Path.rect(0, 0, rect_w, rect_h)
                                          			path.line_width = line_width
                                          			
                                          			if stroke_color == 'lightgrey':
                                          				d = int(rect_w/10)
                                          				for l in range(int(rect_w/d)):
                                          					x = l*d
                                          					path.move_to(x, 0)
                                          					path.line_to(x, rect_h)
                                          			
                                          			super().__init__(path,
                                          							 fill_color='white',
                                          							 stroke_color=stroke_color,
                                          							 parent=parent,
                                          							 *args, **kwargs)
                                          		
                                          
                                          
                                          class Game(Scene):
                                          	def setup(self):
                                          		self.background_color = 'white'
                                          		self.grey_rect = Board(line_width=2, parent=self, position=(sw/3, sh/2), z_position=0)
                                          		self.board = Board(stroke_color='purple', line_width=15, parent=self, position=(sw/3, sh/2), 	z_position=-1)
                                          		
                                          		self.seconds = 0
                                          		self.figures = {}
                                          		self.add_buttons()
                                          		self.add_figure()
                                          		
                                          	
                                          	def update(self):
                                          		self.seconds += self.dt
                                          		if self.seconds > 0.5:
                                          			for f in self.figures:
                                          				self.figures[f][1] -= side/2
                                          				f.position = self.figures[f]
                                          				self.seconds = 0
                                          				if f.position.y == - rect_h/2 + side/2:
                                          					self.add_figure()
                                          					self.figures.pop(f)
                                          					
                                          					
                                          	def touch_began(self, touch):
                                          		print('touch_began')
                                          
                                          
                                          	def add_buttons(self):
                                          		ars = arrows.Main()
                                          		self.present_modal_scene(ars)
                                          
                                          				
                                          	def add_figure(self):
                                          		x = random.choice(range(10)) * side - rect_w/2 + side/2
                                          		y = rect_h/2 - side/2
                                          		block = SpriteNode('pzl:Yellow7', (x, y), z_position=1, size=Size(side, side), parent=self.grey_rect)
                                          		self.figures[block] = [x, y]
                                          
                                          
                                          run(Game())  
                                          

                                          Maybe you’ll check if it works?

                                          cvp 1 Reply Last reply Reply Quote 0
                                          • Karina
                                            Karina last edited by

                                            You’re talking about that position in the beginnig, when I couldn’t move the purple rect from the corner?)

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors