mirror of
https://github.com/github/codeql.git
synced 2025-12-18 18:10:39 +01:00
These get to live next to the existing library and query tests, and are run as part of both the Python 2 and Python 3 language tests.
198 lines
5.0 KiB
Python
198 lines
5.0 KiB
Python
# Code snippets extracted from the tutorial:
|
|
# https://www.python.org/dev/peps/pep-0636/
|
|
|
|
match command.split():
|
|
case [action, obj]:
|
|
pass # interpret action, obj
|
|
|
|
match command.split():
|
|
case [action]:
|
|
pass # interpret single-verb action
|
|
case [action, obj]:
|
|
pass # interpret action, obj
|
|
|
|
match command.split():
|
|
case ["quit"]:
|
|
print("Goodbye!")
|
|
quit_game()
|
|
case ["look"]:
|
|
current_room.describe()
|
|
case ["get", obj]:
|
|
character.get(obj, current_room)
|
|
case ["go", direction]:
|
|
current_room = current_room.neighbor(direction)
|
|
# The rest of your commands go here
|
|
|
|
match command.split():
|
|
case ["drop", *objects]:
|
|
for obj in objects:
|
|
character.drop(obj, current_room)
|
|
# The rest of your commands go here
|
|
|
|
match command.split():
|
|
case ["quit"]: pass # Code omitted for brevity
|
|
case ["go", direction]: pass
|
|
case ["drop", *objects]: pass
|
|
# ... # Other cases
|
|
case _:
|
|
print(f"Sorry, I couldn't understand {command!r}")
|
|
|
|
match command.split():
|
|
# ... # Other cases
|
|
case ["north"] | ["go", "north"]:
|
|
current_room = current_room.neighbor("north")
|
|
case ["get", obj] | ["pick", "up", obj] | ["pick", obj, "up"]:
|
|
pass # Code for picking up the given object
|
|
|
|
match command.split():
|
|
case ["go", ("north" | "south" | "east" | "west")]:
|
|
current_room = current_room.neighbor(...)
|
|
# how do I know which direction to go?
|
|
|
|
match command.split():
|
|
case ["go", ("north" | "south" | "east" | "west") as direction]:
|
|
current_room = current_room.neighbor(direction)
|
|
|
|
match command.split():
|
|
case ["go", direction] if direction in current_room.exits:
|
|
current_room = current_room.neighbor(direction)
|
|
case ["go", _]:
|
|
print("Sorry, you can't go that way")
|
|
|
|
match event.get():
|
|
case Click(position=(x, y)):
|
|
handle_click_at(x, y)
|
|
case KeyPress(key_name="Q") | Quit():
|
|
game.quit()
|
|
case KeyPress(key_name="up arrow"):
|
|
game.go_north()
|
|
# ...
|
|
case KeyPress():
|
|
pass # Ignore other keystrokes
|
|
case other_event:
|
|
raise ValueError(f"Unrecognized event: {other_event}")
|
|
|
|
match event.get():
|
|
case Click((x, y)):
|
|
handle_click_at(x, y)
|
|
|
|
class Click:
|
|
__match_args__ = ("position", "button")
|
|
def __init__(self, pos, btn):
|
|
self.position = pos
|
|
self.button = btn
|
|
# ...
|
|
|
|
match event.get():
|
|
case Click((x, y), button=Button.LEFT): # This is a left click
|
|
handle_click_at(x, y)
|
|
case Click():
|
|
pass # ignore other clicks
|
|
|
|
for action in actions:
|
|
match action:
|
|
case {"text": message, "color": c}:
|
|
ui.set_text_color(c)
|
|
ui.display(message)
|
|
case {"sleep": duration}:
|
|
ui.wait(duration)
|
|
case {"sound": url, "format": "ogg"}:
|
|
ui.play(url)
|
|
case {"sound": _, "format": _}:
|
|
warning("Unsupported audio format")
|
|
|
|
for action in actions:
|
|
match action:
|
|
case {"text": str(message), "color": str(c)}:
|
|
ui.set_text_color(c)
|
|
ui.display(message)
|
|
case {"sleep": float(duration)}:
|
|
ui.wait(duration)
|
|
case {"sound": str(url), "format": "ogg"}:
|
|
ui.play(url)
|
|
case {"sound": _, "format": _}:
|
|
warning("Unsupported audio format")
|
|
|
|
def http_error(status):
|
|
match status:
|
|
case 400:
|
|
return "Bad request"
|
|
case 404:
|
|
return "Not found"
|
|
case 418:
|
|
return "I'm a teapot"
|
|
case _:
|
|
return "Something's wrong with the Internet"
|
|
|
|
match status:
|
|
case 401 | 403 | 404:
|
|
return "Not allowed"
|
|
|
|
# point is an (x, y) tuple
|
|
match point:
|
|
case (0, 0):
|
|
print("Origin")
|
|
case (0, y):
|
|
print(f"Y={y}")
|
|
case (x, 0):
|
|
print(f"X={x}")
|
|
case (x, y):
|
|
print(f"X={x}, Y={y}")
|
|
case _:
|
|
raise ValueError("Not a point")
|
|
|
|
from dataclasses import dataclass
|
|
|
|
@dataclass
|
|
class Point:
|
|
x: int
|
|
y: int
|
|
|
|
def where_is(point):
|
|
match point:
|
|
case Point(x=0, y=0):
|
|
print("Origin")
|
|
case Point(x=0, y=y):
|
|
print(f"Y={y}")
|
|
case Point(x=x, y=0):
|
|
print(f"X={x}")
|
|
case Point():
|
|
print("Somewhere else")
|
|
case _:
|
|
print("Not a point")
|
|
|
|
match points:
|
|
case []:
|
|
print("No points")
|
|
case [Point(0, 0)]:
|
|
print("The origin")
|
|
case [Point(x, y)]:
|
|
print(f"Single point {x}, {y}")
|
|
case [Point(0, y1), Point(0, y2)]:
|
|
print(f"Two on the Y axis at {y1}, {y2}")
|
|
case _:
|
|
print("Something else")
|
|
|
|
match point:
|
|
case Point(x, y) if x == y:
|
|
print(f"Y=X at {x}")
|
|
case Point(x, y):
|
|
print(f"Not on the diagonal")
|
|
|
|
case (Point(x1, y1), Point(x2, y2) as p2):
|
|
pass
|
|
|
|
from enum import Enum
|
|
class Color(Enum):
|
|
RED = 0
|
|
GREEN = 1
|
|
BLUE = 2
|
|
|
|
match color:
|
|
case Color.RED:
|
|
print("I see red!")
|
|
case Color.GREEN:
|
|
print("Grass is green")
|
|
case Color.BLUE:
|
|
print("I'm feeling the blues :(")
|