Skip to content

Commit a8d7e46

Browse files
committed
More rotation work
1 parent d885d80 commit a8d7e46

File tree

6 files changed

+10
-7
lines changed

6 files changed

+10
-7
lines changed

assets/project.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"targets":[{"isStage":true,"name":"Stage","variables":{"`jEk@4|i[#Fk?(8x)AV.-my variable":["variabila mea",0]},"lists":{},"broadcasts":{},"blocks":{},"comments":{},"currentCostume":0,"costumes":[{"name":"decor1","dataFormat":"svg","assetId":"cd21514d0531fdffb22204e0ec5ed84a","md5ext":"cd21514d0531fdffb22204e0ec5ed84a.svg","rotationCenterX":240,"rotationCenterY":180}],"sounds":[{"name":"pop","assetId":"83a9787d4cb6f3b7632b4ddfebf74367","dataFormat":"wav","format":"","rate":44100,"sampleCount":1032,"md5ext":"83a9787d4cb6f3b7632b4ddfebf74367.wav"}],"volume":100,"layerOrder":0,"tempo":60,"videoTransparency":50,"videoState":"on","textToSpeechLanguage":"ro"},{"isStage":false,"name":"Personaj1","variables":{},"lists":{},"broadcasts":{},"blocks":{"i0sF-x|[yQ-#%j@rU%f,":{"opcode":"event_whenflagclicked","next":")u+B7H(M9g25%Em.w=5;","parent":null,"inputs":{},"fields":{},"shadow":false,"topLevel":true,"x":360,"y":168},")u+B7H(M9g25%Em.w=5;":{"opcode":"control_forever","next":null,"parent":"i0sF-x|[yQ-#%j@rU%f,","inputs":{"SUBSTACK":[2,"|LMd9D?RO[2$-2d9tSaH"]},"fields":{},"shadow":false,"topLevel":false},"|LMd9D?RO[2$-2d9tSaH":{"opcode":"control_if_else","next":null,"parent":")u+B7H(M9g25%Em.w=5;","inputs":{"CONDITION":[2,"9}u1.m78Mq=qI@[$TT:G"],"SUBSTACK":[2,"[+(oxNIM5(qM,kq~)/=K"],"SUBSTACK2":[2,"8|07x?GC!6r+k@Gn?Ipk"]},"fields":{},"shadow":false,"topLevel":false},"9}u1.m78Mq=qI@[$TT:G":{"opcode":"sensing_mousedown","next":null,"parent":"|LMd9D?RO[2$-2d9tSaH","inputs":{},"fields":{},"shadow":false,"topLevel":false},"[+(oxNIM5(qM,kq~)/=K":{"opcode":"looks_switchcostumeto","next":null,"parent":"|LMd9D?RO[2$-2d9tSaH","inputs":{"COSTUME":[1,"laZz,h-Z/Z?46wV,!;C*"]},"fields":{},"shadow":false,"topLevel":false},"laZz,h-Z/Z?46wV,!;C*":{"opcode":"looks_costume","next":null,"parent":"[+(oxNIM5(qM,kq~)/=K","inputs":{},"fields":{"COSTUME":["costum2",null]},"shadow":true,"topLevel":false},"8|07x?GC!6r+k@Gn?Ipk":{"opcode":"looks_switchcostumeto","next":null,"parent":"|LMd9D?RO[2$-2d9tSaH","inputs":{"COSTUME":[1,"AVNA2_i-lp8Nh=W*Fvdj"]},"fields":{},"shadow":false,"topLevel":false},"AVNA2_i-lp8Nh=W*Fvdj":{"opcode":"looks_costume","next":null,"parent":"8|07x?GC!6r+k@Gn?Ipk","inputs":{},"fields":{"COSTUME":["costum1",null]},"shadow":true,"topLevel":false}},"comments":{},"currentCostume":0,"costumes":[{"name":"costum1","bitmapResolution":1,"dataFormat":"svg","assetId":"5b8a85774c8c983b993b7d1549b46082","md5ext":"5b8a85774c8c983b993b7d1549b46082.svg","rotationCenterX":47.678985050489445,"rotationCenterY":49.499230353205405},{"name":"costum2","bitmapResolution":1,"dataFormat":"svg","assetId":"1bf03016126b8879eb6228066a9a28a2","md5ext":"1bf03016126b8879eb6228066a9a28a2.svg","rotationCenterX":47.67898252524472,"rotationCenterY":49.49923017660271}],"sounds":[{"name":"Miau","assetId":"83c36d806dc92327b9e7049a565c6bff","dataFormat":"wav","format":"","rate":44100,"sampleCount":37376,"md5ext":"83c36d806dc92327b9e7049a565c6bff.wav"}],"volume":100,"layerOrder":1,"visible":true,"x":0,"y":0,"size":100,"direction":90,"draggable":false,"rotationStyle":"all around"}],"monitors":[],"extensions":[],"meta":{"semver":"3.0.0","vm":"1.2.54","agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"}}
1+
{"targets":[{"isStage":true,"name":"Stage","variables":{},"lists":{},"broadcasts":{},"blocks":{},"comments":{},"currentCostume":0,"costumes":[{"name":"backdrop1","dataFormat":"svg","assetId":"cd21514d0531fdffb22204e0ec5ed84a","md5ext":"cd21514d0531fdffb22204e0ec5ed84a.svg","rotationCenterX":240,"rotationCenterY":180}],"sounds":[],"volume":100,"layerOrder":0,"tempo":60,"videoTransparency":50,"videoState":"on","textToSpeechLanguage":"ro"},{"isStage":false,"name":"Donut","variables":{},"lists":{},"broadcasts":{},"blocks":{"DYTC:C,lIx4EE$!(jZ/t":{"opcode":"event_whenkeypressed","next":"l`W=i}axx0M8$Jw[![hN","parent":null,"inputs":{},"fields":{"KEY_OPTION":["space",null]},"shadow":false,"topLevel":true,"x":260,"y":499},"l`W=i}axx0M8$Jw[![hN":{"opcode":"motion_turnright","next":null,"parent":"DYTC:C,lIx4EE$!(jZ/t","inputs":{"DEGREES":[1,[4,"15"]]},"fields":{},"shadow":false,"topLevel":false}},"comments":{},"currentCostume":0,"costumes":[{"name":"donut","bitmapResolution":1,"dataFormat":"svg","assetId":"c3b5bc130c3f035513efa57b2c49e101","md5ext":"c3b5bc130c3f035513efa57b2c49e101.svg","rotationCenterX":56.47026521242515,"rotationCenterY":32.444223183765985}],"sounds":[{"name":"Bite","assetId":"0039635b1d6853face36581784558454","dataFormat":"wav","format":"adpcm","rate":22050,"sampleCount":8129,"md5ext":"0039635b1d6853face36581784558454.wav"},{"name":"Chomp","assetId":"0b1e3033140d094563248e61de4039e5","dataFormat":"wav","format":"","rate":44100,"sampleCount":11648,"md5ext":"0b1e3033140d094563248e61de4039e5.wav"}],"volume":100,"layerOrder":1,"visible":true,"x":0,"y":0,"size":100,"direction":90,"draggable":false,"rotationStyle":"all around"}],"monitors":[],"extensions":[],"meta":{"semver":"3.0.0","vm":"1.2.54","agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"}}

config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
# Project file name
2626
# If in test mode, set the Scratch project file to load.
27-
projectFileName: str = "projects/MouseDown.sb3"
27+
projectFileName: str = "projects/Rotation.sb3"
2828

2929
# Download cache size
3030
# Number of recent downloaded projects stored. 0 means infinity.

main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ def buttonbox(self):
368368
allSprites.draw(display)
369369
allSprites.update()
370370
else:
371-
display.blit(paused, (WIDTH // 2 - pausedWidth // 2, WIDTH // 2 - pausedHeight // 2))
371+
display.blit(paused, (WIDTH // 2 - pausedWidth // 2, HEIGHT // 2 - pausedHeight // 2))
372372

373373
pygame.display.flip()
374374
mainWindow.update()

projects/Rotation.sb3

11.8 KB
Binary file not shown.

projects/Rotation2.sb3

17.4 KB
Binary file not shown.

targetSprite.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import config
1313
import sys
1414
import i18n
15+
import copy
1516

1617
i18n.set("locale", config.language)
1718
i18n.set("filename_format", "{locale}.{format}")
@@ -41,15 +42,16 @@ def __init__(self, target):
4142
self.y = target.y
4243
self.direction = target.direction
4344
self.size = target.size
44-
self.image = sprite
4545
self.sprite = sprite
46+
self.image = self.sprite.copy()
4647
self.rect = self.image.get_rect()
4748
self.isStage = target.isStage
4849
self.imageSize = sprite.get_size()
4950
if self.target.name == "Stage":
5051
self.name = _("stage")
5152
else:
5253
self.name = self.target.name
54+
5355
self.setXy(self.x, self.y)
5456
self.setRot(self.direction)
5557

@@ -81,7 +83,7 @@ def setXy(self, x, y):
8183
# Set X and Y
8284
self.x = x
8385
self.y = y
84-
# print(_("debug-prefix"), _("new-sprite-position", x=x, y=y, name=self.name), file=sys.stderr)
86+
print(_("debug-prefix"), _("new-sprite-position", x=x, y=y, name=self.name), file=sys.stderr)
8587
# Scratch really is weird.
8688
if self.isBitmap:
8789
self.rect.x = self.x + scratch.WIDTH // 2 - round(self.target.costumes[self.target.currentCostume].rotationCenterX) + round(self.imageSize[0] / 2)
@@ -100,8 +102,9 @@ def setXyDelta(self, dx, dy):
100102
def setRot(self, rot):
101103
self.direction = rot
102104
print(_("debug-prefix"), _("new-sprite-rotation", rot=rot, name=self.name), file=sys.stderr)
103-
self.image = self.sprite
104-
sprite = pygame.transform.rotate(self.image, 90 - self.direction)
105+
self.sprite = self.image
106+
self.sprite = pygame.transform.rotate(self.sprite, 90 - self.direction)
107+
self.rect = self.sprite.get_rect(center=self.rect.center)
105108

106109
# Relatively set self rotation (turn)
107110
def setRotDelta(self, drot):

0 commit comments

Comments
 (0)