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
    19415
    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

      @Karina said:

      what did you change that it works now?

      Check the differences in positional/keyword parameters in

      def __init__(...
      
      1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors