|
2037 | 2037 |
|
2038 | 2038 | <p><br></p>
|
2039 | 2039 | <div><h1 id="libraries">Libraries</h1><div><h2 id="progressbar"><a href="#progressbar" name="progressbar">#</a>Progress Bar</h2><pre><code class="python language-python hljs"><span class="hljs-comment"># $ pip3 install tqdm</span>
|
2040 |
| -<span class="hljs-keyword">from</span> tqdm <span class="hljs-keyword">import</span> tqdm |
2041 |
| -<span class="hljs-keyword">from</span> time <span class="hljs-keyword">import</span> sleep |
2042 |
| -<span class="hljs-keyword">for</span> el <span class="hljs-keyword">in</span> tqdm([<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>]): |
2043 |
| - sleep(<span class="hljs-number">0.2</span>) |
| 2040 | +<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> tqdm <span class="hljs-keyword">import</span> tqdm |
| 2041 | +<span class="hljs-meta">>>> </span><span class="hljs-keyword">for</span> el <span class="hljs-keyword">in</span> tqdm([<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>], desc=<span class="hljs-string">'Processing'</span>): |
| 2042 | +<span class="hljs-meta">... </span> <span class="hljs-keyword">pass</span> |
| 2043 | +Processing: 100%|██████████████████| 3/3 [00:00<00:00, 11516.49it/s] |
2044 | 2044 | </code></pre></div></div>
|
2045 | 2045 |
|
2046 | 2046 |
|
|
2550 | 2550 | <Sound>.play() <span class="hljs-comment"># Starts playing the sound.</span>
|
2551 | 2551 | </code></pre></div>
|
2552 | 2552 |
|
2553 |
| -<div><h3 id="basicmariobrothersexample">Basic Mario Brothers Example</h3><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> collections, dataclasses, enum, io, pygame, urllib.request, itertools <span class="hljs-keyword">as</span> it |
| 2553 | +<div><h3 id="basicmariobrothersexample">Basic Mario Brothers Example</h3><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> collections, dataclasses, enum, io, itertools <span class="hljs-keyword">as</span> it, pygame <span class="hljs-keyword">as</span> pg, urllib.request |
2554 | 2554 | <span class="hljs-keyword">from</span> random <span class="hljs-keyword">import</span> randint
|
2555 | 2555 |
|
2556 | 2556 | P = collections.namedtuple(<span class="hljs-string">'P'</span>, <span class="hljs-string">'x y'</span>) <span class="hljs-comment"># Position</span>
|
|
2559 | 2559 |
|
2560 | 2560 | <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>
|
2561 | 2561 | <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_screen</span><span class="hljs-params">()</span>:</span>
|
2562 |
| - pygame.init() |
2563 |
| - <span class="hljs-keyword">return</span> pygame.display.set_mode(<span class="hljs-number">2</span> * [SIZE*<span class="hljs-number">16</span>]) |
| 2562 | + pg.init() |
| 2563 | + <span class="hljs-keyword">return</span> pg.display.set_mode(<span class="hljs-number">2</span> * [SIZE*<span class="hljs-number">16</span>]) |
2564 | 2564 | <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_images</span><span class="hljs-params">()</span>:</span>
|
2565 | 2565 | url = <span class="hljs-string">'https://gto76.github.io/python-cheatsheet/web/mario_bros.png'</span>
|
2566 |
| - img = pygame.image.load(io.BytesIO(urllib.request.urlopen(url).read())) |
| 2566 | + img = pg.image.load(io.BytesIO(urllib.request.urlopen(url).read())) |
2567 | 2567 | <span class="hljs-keyword">return</span> [img.subsurface(get_rect(x, <span class="hljs-number">0</span>)) <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> range(img.get_width() // <span class="hljs-number">16</span>)]
|
2568 | 2568 | <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_mario</span><span class="hljs-params">()</span>:</span>
|
2569 | 2569 | Mario = dataclasses.make_dataclass(<span class="hljs-string">'Mario'</span>, <span class="hljs-string">'rect spd facing_left frame_cycle'</span>.split())
|
|
2573 | 2573 | [(randint(<span class="hljs-number">1</span>, SIZE<span class="hljs-number">-2</span>), randint(<span class="hljs-number">2</span>, SIZE<span class="hljs-number">-2</span>)) <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> range(SIZE**<span class="hljs-number">2</span> // <span class="hljs-number">10</span>)]
|
2574 | 2574 | <span class="hljs-keyword">return</span> [get_rect(*p) <span class="hljs-keyword">for</span> p <span class="hljs-keyword">in</span> positions]
|
2575 | 2575 | <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_rect</span><span class="hljs-params">(x, y)</span>:</span>
|
2576 |
| - <span class="hljs-keyword">return</span> pygame.Rect(x*<span class="hljs-number">16</span>, y*<span class="hljs-number">16</span>, <span class="hljs-number">16</span>, <span class="hljs-number">16</span>) |
| 2576 | + <span class="hljs-keyword">return</span> pg.Rect(x*<span class="hljs-number">16</span>, y*<span class="hljs-number">16</span>, <span class="hljs-number">16</span>, <span class="hljs-number">16</span>) |
2577 | 2577 | run(get_screen(), get_images(), get_mario(), get_tiles())
|
2578 | 2578 |
|
2579 | 2579 | <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">run</span><span class="hljs-params">(screen, images, mario, tiles)</span>:</span>
|
2580 |
| - clock = pygame.time.Clock() |
2581 |
| - <span class="hljs-keyword">while</span> all(event.type != pygame.QUIT <span class="hljs-keyword">for</span> event <span class="hljs-keyword">in</span> pygame.event.get()): |
2582 |
| - keys = {pygame.K_UP: D.n, pygame.K_RIGHT: D.e, pygame.K_DOWN: D.s, pygame.K_LEFT: D.w} |
2583 |
| - pressed = {keys.get(i) <span class="hljs-keyword">for</span> i, on <span class="hljs-keyword">in</span> enumerate(pygame.key.get_pressed()) <span class="hljs-keyword">if</span> on} |
| 2580 | + clock = pg.time.Clock() |
| 2581 | + <span class="hljs-keyword">while</span> all(event.type != pg.QUIT <span class="hljs-keyword">for</span> event <span class="hljs-keyword">in</span> pg.event.get()): |
| 2582 | + keys = {pg.K_UP: D.n, pg.K_RIGHT: D.e, pg.K_DOWN: D.s, pg.K_LEFT: D.w} |
| 2583 | + pressed = {keys.get(i) <span class="hljs-keyword">for</span> i, on <span class="hljs-keyword">in</span> enumerate(pg.key.get_pressed()) <span class="hljs-keyword">if</span> on} |
2584 | 2584 | update_speed(mario, tiles, pressed)
|
2585 | 2585 | update_position(mario, tiles)
|
2586 | 2586 | draw(screen, images, mario, tiles, pressed)
|
|
2619 | 2619 | screen.blit(images[get_frame_index() + mario.facing_left * <span class="hljs-number">9</span>], mario.rect)
|
2620 | 2620 | <span class="hljs-keyword">for</span> rect <span class="hljs-keyword">in</span> tiles:
|
2621 | 2621 | screen.blit(images[<span class="hljs-number">18</span> <span class="hljs-keyword">if</span> {*rect.topleft} & {<span class="hljs-number">0</span>, (SIZE<span class="hljs-number">-1</span>)*<span class="hljs-number">16</span>} <span class="hljs-keyword">else</span> <span class="hljs-number">19</span>], rect)
|
2622 |
| - pygame.display.flip() |
| 2622 | + pg.display.flip() |
2623 | 2623 |
|
2624 | 2624 | <span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
|
2625 | 2625 | main()
|
|
0 commit comments