Skip to content

Commit 62b20b2

Browse files
committed
PyGame
1 parent 4752c24 commit 62b20b2

File tree

2 files changed

+8
-12
lines changed

2 files changed

+8
-12
lines changed

README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2914,7 +2914,7 @@ Pygame
29142914

29152915
#### Runs a simple Mario game:
29162916
```python
2917-
import collections, enum, itertools, pygame, random, math, dataclasses, random
2917+
import collections, dataclasses, enum, itertools, math, pygame, random
29182918

29192919
D = enum.Enum('D', 'n e s w')
29202920
P = collections.namedtuple('P', 'x y')
@@ -2929,7 +2929,7 @@ FRAMES += [pygame.transform.flip(f, True, False) for f in FRAMES]
29292929

29302930
def main():
29312931
pygame.init()
2932-
screen = pygame.display.set_mode(2 * [SCR_SIDE*RECT_SIDE])
2932+
screen = pygame.display.set_mode(2 * [SCR_SIDE * RECT_SIDE])
29332933
mario = Mario(pygame.Rect(16, 16, 16, 16), P(0, 0), False, itertools.cycle(range(3)))
29342934
while not any(event.type == pygame.QUIT for event in pygame.event.get()):
29352935
keys = {pygame.K_UP: D.n, pygame.K_RIGHT: D.e, pygame.K_DOWN: D.s, pygame.K_LEFT: D.w}
@@ -2949,17 +2949,15 @@ def update_speed(mario, pressed):
29492949
mario.spd = P(*[max(-thresh, min(thresh, s)) for thresh, s in zip(MAX_SPEED, speed)])
29502950

29512951
def update_position(mario):
2952-
larger_speed = max(abs(s) for s in mario.spd)
2953-
if larger_speed == 0:
2954-
return
29552952
delta, old_p = P(0, 0), mario.rect.topleft
2953+
larger_speed = max(abs(s) for s in mario.spd)
29562954
for _ in range(int(larger_speed)):
29572955
mario.spd = stop_on_collision(mario.spd, get_boundaries(mario.rect))
29582956
delta = P(*[s/larger_speed + dlt for s, dlt in zip(mario.spd, delta)])
29592957
mario.rect.topleft = [sum(a) for a in zip(old_p, delta)]
29602958

29612959
def get_boundaries(rect):
2962-
deltas = {D.n: (0, -1), D.e: (1, 0), D.s: (0, 1), D.w: (-1, 0)}
2960+
deltas = {D.n: P(0, -1), D.e: P(1, 0), D.s: P(0, 1), D.w: P(-1, 0)}
29632961
return {d for d, delta in deltas.items() if rect.move(delta).collidelist(FLOORS) != -1}
29642962

29652963
def stop_on_collision(spd, bounds):

index.html

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2475,7 +2475,7 @@
24752475
</code></pre></div></div>
24762476

24772477

2478-
<div><h2 id="pygame"><a href="#pygame" name="pygame">#</a>Pygame</h2><div><h3 id="example-3">Example</h3><div><h4 id="runsasimplemariogame">Runs a simple Mario game:</h4><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> collections, enum, itertools, pygame, random, math, dataclasses, random
2478+
<div><h2 id="pygame"><a href="#pygame" name="pygame">#</a>Pygame</h2><div><h3 id="example-3">Example</h3><div><h4 id="runsasimplemariogame">Runs a simple Mario game:</h4><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> collections, dataclasses, enum, itertools, math, pygame, random
24792479

24802480
D = enum.Enum(<span class="hljs-string">'D'</span>, <span class="hljs-string">'n e s w'</span>)
24812481
P = collections.namedtuple(<span class="hljs-string">'P'</span>, <span class="hljs-string">'x y'</span>)
@@ -2490,7 +2490,7 @@
24902490

24912491
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>
24922492
pygame.init()
2493-
screen = pygame.display.set_mode(<span class="hljs-number">2</span> * [SCR_SIDE*RECT_SIDE])
2493+
screen = pygame.display.set_mode(<span class="hljs-number">2</span> * [SCR_SIDE * RECT_SIDE])
24942494
mario = Mario(pygame.Rect(<span class="hljs-number">16</span>, <span class="hljs-number">16</span>, <span class="hljs-number">16</span>, <span class="hljs-number">16</span>), P(<span class="hljs-number">0</span>, <span class="hljs-number">0</span>), <span class="hljs-keyword">False</span>, itertools.cycle(range(<span class="hljs-number">3</span>)))
24952495
<span class="hljs-keyword">while</span> <span class="hljs-keyword">not</span> any(event.type == pygame.QUIT <span class="hljs-keyword">for</span> event <span class="hljs-keyword">in</span> pygame.event.get()):
24962496
keys = {pygame.K_UP: D.n, pygame.K_RIGHT: D.e, pygame.K_DOWN: D.s, pygame.K_LEFT: D.w}
@@ -2510,17 +2510,15 @@
25102510
mario.spd = P(*[max(-thresh, min(thresh, s)) <span class="hljs-keyword">for</span> thresh, s <span class="hljs-keyword">in</span> zip(MAX_SPEED, speed)])
25112511

25122512
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">update_position</span><span class="hljs-params">(mario)</span>:</span>
2513-
larger_speed = max(abs(s) <span class="hljs-keyword">for</span> s <span class="hljs-keyword">in</span> mario.spd)
2514-
<span class="hljs-keyword">if</span> larger_speed == <span class="hljs-number">0</span>:
2515-
<span class="hljs-keyword">return</span>
25162513
delta, old_p = P(<span class="hljs-number">0</span>, <span class="hljs-number">0</span>), mario.rect.topleft
2514+
larger_speed = max(abs(s) <span class="hljs-keyword">for</span> s <span class="hljs-keyword">in</span> mario.spd)
25172515
<span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> range(int(larger_speed)):
25182516
mario.spd = stop_on_collision(mario.spd, get_boundaries(mario.rect))
25192517
delta = P(*[s/larger_speed + dlt <span class="hljs-keyword">for</span> s, dlt <span class="hljs-keyword">in</span> zip(mario.spd, delta)])
25202518
mario.rect.topleft = [sum(a) <span class="hljs-keyword">for</span> a <span class="hljs-keyword">in</span> zip(old_p, delta)]
25212519

25222520
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_boundaries</span><span class="hljs-params">(rect)</span>:</span>
2523-
deltas = {D.n: (<span class="hljs-number">0</span>, <span class="hljs-number">-1</span>), D.e: (<span class="hljs-number">1</span>, <span class="hljs-number">0</span>), D.s: (<span class="hljs-number">0</span>, <span class="hljs-number">1</span>), D.w: (<span class="hljs-number">-1</span>, <span class="hljs-number">0</span>)}
2521+
deltas = {D.n: P(<span class="hljs-number">0</span>, <span class="hljs-number">-1</span>), D.e: P(<span class="hljs-number">1</span>, <span class="hljs-number">0</span>), D.s: P(<span class="hljs-number">0</span>, <span class="hljs-number">1</span>), D.w: P(<span class="hljs-number">-1</span>, <span class="hljs-number">0</span>)}
25242522
<span class="hljs-keyword">return</span> {d <span class="hljs-keyword">for</span> d, delta <span class="hljs-keyword">in</span> deltas.items() <span class="hljs-keyword">if</span> rect.move(delta).collidelist(FLOORS) != <span class="hljs-number">-1</span>}
25252523

25262524
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">stop_on_collision</span><span class="hljs-params">(spd, bounds)</span>:</span>

0 commit comments

Comments
 (0)