作为学习、练习与尝试,这里创建一个多人绘画的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:多人绘画
MicroPython实验代码
- @namespace
- class SpriteKind:
- Trailing = SpriteKind.create()
-
- def on_player3_button_b_pressed():
- changeBrushSize(2)
- controller.player3.on_button_event(ControllerButton.B,
- ControllerButtonEvent.PRESSED,
- on_player3_button_b_pressed)
-
- def on_on_created(sprite):
- sprite.set_stay_in_screen(True)
- sprite.set_flag(SpriteFlag.INVISIBLE, True)
- sprites.on_created(SpriteKind.Trailing, on_on_created)
-
- def on_player1_button_a_pressed():
- startPaint(0)
- controller.player1.on_button_event(ControllerButton.A,
- ControllerButtonEvent.PRESSED,
- on_player1_button_a_pressed)
-
- def on_on_created2(sprite2):
- sprite2.set_stay_in_screen(True)
- sprites.on_created(SpriteKind.player, on_on_created2)
-
- def on_player4_button_a_pressed():
- startPaint(3)
- controller.player4.on_button_event(ControllerButton.A,
- ControllerButtonEvent.PRESSED,
- on_player4_button_a_pressed)
-
- def on_player2_button_b_pressed():
- changeBrushSize(1)
- controller.player2.on_button_event(ControllerButton.B,
- ControllerButtonEvent.PRESSED,
- on_player2_button_b_pressed)
-
- def changeBrushSize(index: number):
- global sizeIndicator
- sizeIndicator = sprites.create(img("""
- . . 1 1 1 1 1 1 1 1 1 1 1 1 .
- . 1 1 1 1 1 1 1 1 1 1 1 1 1 .
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- . 1 1 1 1 1 1 1 1 1 1 1 1 1 .
- . . 1 1 1 1 1 1 1 1 1 1 1 . .
- . . . . . . 1 1 1 . . . . . .
- . . . . . . . 1 . . . . . . .
- """),
- SpriteKind.player)
- sizeIndicator.x = players[index].x
- sizeIndicator.bottom = players[index].top
- sizeIndicator.lifespan = 750
- brushSize[index] = max(1, (brushSize[index] + 1) % 7)
- spriteutils.fill_circle(sizeIndicator.image,
- 7,
- 6,
- brushSize[index],
- brushColors[index])
-
- def on_player2_button_a_pressed():
- startPaint(1)
- controller.player2.on_button_event(ControllerButton.A,
- ControllerButtonEvent.PRESSED,
- on_player2_button_a_pressed)
-
- def on_player1_button_b_pressed():
- changeBrushSize(0)
- controller.player1.on_button_event(ControllerButton.B,
- ControllerButtonEvent.PRESSED,
- on_player1_button_b_pressed)
-
- def startPaint(index2: number):
- spriteutils.place_angle_from(trailingSprites[index2], 0, 0, players[index2])
- spriteutils.place_angle_from(followingSprites[index2], 0, 0, players[index2])
-
- def on_player4_button_b_pressed():
- changeBrushSize(3)
- controller.player4.on_button_event(ControllerButton.B,
- ControllerButtonEvent.PRESSED,
- on_player4_button_b_pressed)
-
- def paintLine(color: number, radius: number, fromSprite: Sprite, toSprite: Sprite):
- global angle, distance
- angle = spriteutils.angle_from(toSprite, fromSprite)
- distance = spriteutils.distance_between(fromSprite, toSprite)
- while True:
- spriteutils.place_angle_from(fromSprite, angle, distance, toSprite)
- spriteutils.fill_circle(scene.background_image(),
- Math.round(fromSprite.x),
- Math.round(fromSprite.y),
- radius,
- color)
- distance += -1
- if distance <= 0:
- break
- spriteutils.place_angle_from(fromSprite, 0, 0, toSprite)
-
- def on_player3_button_a_pressed():
- startPaint(2)
- controller.player3.on_button_event(ControllerButton.A,
- ControllerButtonEvent.PRESSED,
- on_player3_button_a_pressed)
-
- def on_menu_pressed():
- scene.set_background_image(img("""
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- """))
- controller.menu.on_event(ControllerButtonEvent.PRESSED, on_menu_pressed)
-
- targetAngle = 0
- distance = 0
- angle = 0
- followingSprites: List[Sprite] = []
- trailingSprites: List[Sprite] = []
- players: List[Sprite] = []
- brushColors: List[number] = []
- brushSize: List[number] = []
- sizeIndicator: Sprite = None
- scene.set_background_image(img("""
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- ................................................................................................................................................................
- """))
- p1 = sprites.create(img("""
- . . . f . . .
- . . f 2 f . .
- . f f 2 f f .
- f 2 2 2 2 2 f
- . f f 2 f f .
- . . f 2 f . .
- . . . f . . .
- """),
- SpriteKind.player)
- p1.set_position(30, 30)
- p2 = sprites.create(img("""
- . . . f . . .
- . . f 8 f . .
- . f f 8 f f .
- f 8 8 8 8 8 f
- . f f 8 f f .
- . . f 8 f . .
- . . . f . . .
- """),
- SpriteKind.player)
- p2.set_position(130, 30)
- p3 = sprites.create(img("""
- . . . f . . .
- . . f 4 f . .
- . f f 4 f f .
- f 4 4 4 4 4 f
- . f f 4 f f .
- . . f 4 f . .
- . . . f . . .
- """),
- SpriteKind.player)
- p3.set_position(30, 90)
- p4 = sprites.create(img("""
- . . . f . . .
- . . f 6 f . .
- . f f 6 f f .
- f 6 6 6 6 6 f
- . f f 6 f f .
- . . f 6 f . .
- . . . f . . .
- """),
- SpriteKind.player)
- p4.set_position(130, 90)
- controller.player1.move_sprite(p1, 50, 50)
- controller.player2.move_sprite(p2, 50, 50)
- controller.player3.move_sprite(p3, 50, 50)
- controller.player4.move_sprite(p4, 50, 50)
- brushColors = [2, 8, 4, 6]
- brushSize = [3, 3, 3, 3]
- players = [p1, p2, p3, p4]
- trailingSprites = [sprites.create(img("""
- . . . f . . .
- . . f 2 f . .
- . f f 2 f f .
- f 2 2 2 2 2 f
- . f f 2 f f .
- . . f 2 f . .
- . . . f . . .
- """),
- SpriteKind.Trailing),
- sprites.create(img("""
- . . . f . . .
- . . f 2 f . .
- . f f 2 f f .
- f 2 2 2 2 2 f
- . f f 2 f f .
- . . f 2 f . .
- . . . f . . .
- """),
- SpriteKind.Trailing),
- sprites.create(img("""
- . . . f . . .
- . . f 2 f . .
- . f f 2 f f .
- f 2 2 2 2 2 f
- . f f 2 f f .
- . . f 2 f . .
- . . . f . . .
- """),
- SpriteKind.Trailing),
- sprites.create(img("""
- . . . f . . .
- . . f 2 f . .
- . f f 2 f f .
- f 2 2 2 2 2 f
- . f f 2 f f .
- . . f 2 f . .
- . . . f . . .
- """),
- SpriteKind.Trailing)]
- followingSprites = [sprites.create(img("""
- . . . f . . .
- . . f 2 f . .
- . f f 2 f f .
- f 2 2 2 2 2 f
- . f f 2 f f .
- . . f 2 f . .
- . . . f . . .
- """),
- SpriteKind.Trailing),
- sprites.create(img("""
- . . . f . . .
- . . f 8 f . .
- . f f 8 f f .
- f 8 8 8 8 8 f
- . f f 8 f f .
- . . f 8 f . .
- . . . f . . .
- """),
- SpriteKind.Trailing),
- sprites.create(img("""
- . . . f . . .
- . . f 4 f . .
- . f f 4 f f .
- f 4 4 4 4 4 f
- . f f 4 f f .
- . . f 4 f . .
- . . . f . . .
- """),
- SpriteKind.Trailing),
- sprites.create(img("""
- . . . f . . .
- . . f 6 f . .
- . f f 6 f f .
- f 6 6 6 6 6 f
- . f f 6 f f .
- . . f 6 f . .
- . . . f . . .
- """),
- SpriteKind.Trailing)]
- turnRate = 0.2
-
- def on_on_update():
- global angle, targetAngle
- if controller.player1.is_pressed(ControllerButton.A):
- paintLine(2, brushSize[0], trailingSprites[0], followingSprites[0])
- if controller.player2.is_pressed(ControllerButton.A):
- paintLine(8, brushSize[1], trailingSprites[1], followingSprites[1])
- if controller.player3.is_pressed(ControllerButton.A):
- paintLine(4, brushSize[2], trailingSprites[2], followingSprites[2])
- if controller.player4.is_pressed(ControllerButton.A):
- paintLine(6, brushSize[3], trailingSprites[3], followingSprites[3])
- for index3 in range(4):
- angle = Math.atan2(followingSprites[index3].vy, followingSprites[index3].vx)
- if angle < 0:
- angle += 2 * spriteutils.consts(spriteutils.Consts.PI)
- targetAngle = spriteutils.angle_from(followingSprites[index3], players[index3])
- if targetAngle < 0:
- targetAngle += 2 * spriteutils.consts(spriteutils.Consts.PI)
- if abs(targetAngle - angle) > spriteutils.consts(spriteutils.Consts.PI):
- if angle < targetAngle:
- angle += 0 - turnRate
- else:
- angle += turnRate
- elif angle < targetAngle:
- angle += turnRate
- else:
- angle += 0 - turnRate
- if angle < 0:
- angle += 2 * spriteutils.consts(spriteutils.Consts.PI)
- spriteutils.set_velocity_at_angle(followingSprites[index3],
- angle,
- 6 * min(10,
- spriteutils.distance_between(followingSprites[index3], players[index3])))
- game.on_update(on_on_update)
复制代码
|