FAQ: Python in Pokitto

hmmm, it looks like only pins brought out to the PEX header are usable, is this right? I need some of the internal pins…

_aPin = Pin(Pin.P1_9, Pin.IN)
_bPin = Pin(Pin.P1_4, Pin.IN)
_cPin = Pin(Pin.P1_10, Pin.IN)
_upPin = Pin(Pin.P1_13, Pin.IN)
_downPin = Pin(Pin.P1_3, Pin.IN)
_leftPin = Pin(Pin.P1_25, Pin.IN)
_rightPin = Pin(Pin.P1_7, Pin.IN)

Added to the FAQ. The getrandbits() is the only function for getting random numbers.

1 Like

I could probably add these.

I’d probably be the only one who uses them. If it’s more than a couple of seconds work don’t bother.

1 Like

How do you draw a rectangle on the screen? In fact where can you see which functions are available?

Here are the gaming API functions listed: [Wiki]uPyGame & umachine library reference (for Micro Python in Pokitto)

You can only draw a filled rectangle.

1 Like

Thanks. I had checked that list but somehow missed the fill function…

My solution is to use 2 images, 1 horizontal and 1 vertical line then just draw however many you need to the screen

1 Like

Images? There’s no ‘draw line’ function? Or is it a speed thing?

Hrm, I wonder if image rendering is faster or slower than bresenham’s line algorithm…

I know, I couldn’t find anything other than drawing images or filling rects, so I did what anyone else would do. I used images of short lines and drew as many as I needed to create a rect.

As already two people were requesting drawing primitives, I am curious what you are doing with the primitives? I almost never use them in games.

I wanted to draw some lines and mistakenly thought I could use the filled rectangle function.
I always assumed that just drawing lines would be “better” in terms of “performance” than having to store and draw a whole bitmap of which most pixels are transparent. I currently don’t really need the lines though.

1 Like

Particles, particles everywhere.
And lasers light beams.
Also debug hit box, 3d flat shaded triangles, landscapes.
If you are not a pixel artist primitives help a lot.

2 Likes

Yes laser light beams!

3 Likes

I usually use primitives for drawing UI elements.
Boxes to draw text on come in very handy.
(Fill a rect in a background colour, draw an outline of a foreground colour,
put text in the resulting empty space.)

Also shape drawing is dynamically scalable, bitmaps aren’t (unless you repeat part of the image).

And shapes are good placeholders for when you can’t be bothered to do art.

I second this, although with a rectangle primitive I could manage.

Drawpixel would be most important for me

@Hanski is it possible to not get always the same random numbers?

Now that’s interesting, a random number generator not generating random numbers. Maybe you need a function to reset it?

Yeah I need a way to set the seed based on the time or something

Just use a splash screen to seed your random numbers:


def splashScreen():
    while True:
        random.getrandbits(30)
        eventtype = upygame.event.poll()
        if eventtype != upygame.NOEVENT and eventtype.type == upygame.KEYUP:
            return
        screen.blit( splash.bmp, 0, 0 )       
        upygame.display.flip()

This calls random.getrandbits every frame, until the player presses a button. Since the amount of time until that happens isn’t constant, you get a different sequence of random numbers from then on.

7 Likes