From 5acb2792268a44eea49b79aba91ac0112588c99f Mon Sep 17 00:00:00 2001 From: Neal Finger Date: Sun, 5 Feb 2023 15:59:55 -0700 Subject: [PATCH] title screen sprite, player root animation calm down --- Throot.py | 26 +++++++++++++------- ThrootTitle.bmp | Bin 0 -> 116278 bytes ThrootTitleSingleFrame.bmp | Bin 0 -> 3064 bytes artrepository.py | 15 ++++++++++++ player.py | 48 ++----------------------------------- 5 files changed, 35 insertions(+), 54 deletions(-) create mode 100644 ThrootTitle.bmp create mode 100644 ThrootTitleSingleFrame.bmp diff --git a/Throot.py b/Throot.py index 0878d8b..5e09ac4 100644 --- a/Throot.py +++ b/Throot.py @@ -64,17 +64,27 @@ class RoomTitle(Room): } # draw title sprite - title_text = 'press a to start' + #thumby.display.drawSprite(sprite_title.width, sprite_title.height, sprite_title.image) - chr_len = 5 - x = int(round(thumby.display.width / 2 - (chr_len * len(title_text)) / 2)) - y = int(round(thumby.display.height / 2 - chr_len / 2)) + thumby.display.blit(sprite_title.image, 0, 0, sprite_title.width, sprite_title.height, + -1, 0, 0) + # title text + chrx = 5 + chry = 7 buff = 2 - w = chr_len * len(title_text) + buff - h = chr_len + buff - thumby.display.drawFilledRectangle(x - buff, y - buff, w, h, 1) - thumby.display.drawText(title_text, x, y, 0) + + x = 14#int(round(thumby.display.width / 2 - (chr_len * len(title_text)) / 2)) + y = 40 - chry - buff#int(round(thumby.display.height / 2 - chr_len / 2)) + + w = chrx * 6 + buff + h = chry + buff + thumby.display.drawFilledRectangle(x - buff, y - buff, w, h * 2 + buff, 0) + #thumby.display.drawText('press a', x, y, 0) + thumby.display.drawText('start', x, y, 1) + + thumby.display.blit(sprite_buttona.image, 2, 40 - 8, sprite_buttona.width, sprite_buttona.height, + -1, 0, 0) class GameLoop(Room): def __init__(self): diff --git a/ThrootTitle.bmp b/ThrootTitle.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0524c475e43d1ac26376a98baa34340f7a34dd12 GIT binary patch literal 116278 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 literal 0 HcmV?d00001 diff --git a/artrepository.py b/artrepository.py index 09464ed..015d3ef 100644 --- a/artrepository.py +++ b/artrepository.py @@ -182,4 +182,19 @@ sprite_water = SpriteImage( 8 ) +sprite_title = SpriteImage( + bytearray([32,128,40,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,160,128,32,0,72,0,192,96,24,8,4,6,2,2,2,2,2,4,12,24,112,192,0,0,0,3,3,3,3,3,255,255,255,3,251,251,251,3,3,251,251,251,3,251,251,155,155,155,155,99,99,0,248,248,24,24,24,251,251,3,251,251,27,27,27,251,251,3,255,255,255,3,3,3,0,1,0,31,48,96,64,64,64,98,50,30,0,0,192,96,48,16,24,15,12,24,48,96,192,0,0,0,255,255,255,0,255,255,255,7,7,255,255,255,0,255,255,1,1,1,3,255,255,0,255,255,128,128,128,255,255,0,255,255,128,128,128,255,255,0,255,255,255,0,0,0,0,192,64,96,32,32,69,192,10,0,4,0,0,127,129,0,0,0,0,0,0,0,96,48,29,7,0,0,63,255,255,192,149,85,85,84,84,85,85,85,84,85,85,84,84,84,84,85,85,84,85,85,85,85,85,85,85,84,85,85,85,85,85,85,21,192,255,255,127,0,0,0,3,7,4,132,128,192,96,29,70,0,0,0,0,0,1,6,12,8,24,16,248,140,4,4,108,72,120,48,0,128,193,255,255,127,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,252,254,255,183,99,65,64,64,96,48,24,30,99,65,64,194,128,133,0,2,0,128,96,24,12,4,2,2,1,1]), + None, + 72, + 40 +) + +sprite_water = SpriteImage( + bytearray([60,98,221,203,203,221,98,60]) + bytearray([56,68,186,150,150,186,68,56]), + None, + 8, + 8 +) + + OBSTACLES = [skull, pizza, boulder, ball, steve, mathroot, leaf, robot, dinoskull, dinojaw, dinospine, bone, bigdinohead, bigboneddiag, bigdoritoobstacle, spaceinv,annoydead,lvl4wall,ballobstaclelvl3,Doritoobstaclelvl5] \ No newline at end of file diff --git a/player.py b/player.py index 8e87f4c..78ef1dc 100644 --- a/player.py +++ b/player.py @@ -103,8 +103,8 @@ class Camera: class PlayerAnimation: - # width and height of range bounding box - RANDOM_RANGE = int(7) + # width and height of range bounding box must be odd + RANDOM_RANGE = int(5) POS_RANGE = int(3) POS_X = int(0) POS_Y = int(1) @@ -115,26 +115,6 @@ class PlayerAnimation: self.debugposrange = self.POS_RANGE def update_phys(self, plworldx, plworldy, camera): - - #print(plworldx, plworldy, plscreeny, current_depth) - - ### exit if player y pos less than random range - # # debug change random range - # inp = int(0) - # if thumby.buttonD.justPressed(): - # inp -= 1 - # if thumby.buttonU.justPressed(): - # inp += 1 - - # if inp != 0: - # self.debugposrange = max(self.debugposrange + inp * 2, 1) - # print('debugposrange: ', self.debugposrange) - - # # if plworldy < self.poslist[-1][self.POS_Y] + random.randint(1, self.debugposrange): - # # return - - # if plworldy < self.poslist[-1][self.POS_Y] + self.debugposrange: - # return if plworldy < self.poslist[-1][self.POS_Y] + self.POS_RANGE: return @@ -142,23 +122,6 @@ class PlayerAnimation: ### get new position rad = self.RANDOM_RANGE // 2 - # # debug change random range - # inp = int(0) - # if thumby.buttonB.justPressed(): - # inp -= 1 - # if thumby.buttonA.justPressed(): - # inp += 1 - - # if inp != 0: - # self.debugrandomrange = max(self.debugrandomrange + inp * 2, 1) - # print('debugrandomrange:', self.debugrandomrange) - - # rad = max(self.debugrandomrange // 2, 1) - - # vector int - # self.poslist.append((plworldx + random.randrange(-rad, rad), - # plworldy + random.randrange(-rad, rad))) - # move last pos self.poslist[-1] = ( plworldx + random.randrange(-rad, rad), @@ -168,20 +131,13 @@ class PlayerAnimation: # new pos is perfectly on player self.poslist.append((plworldx, plworldy)) - # # debug - # self.poslist.append((plworldx, plworldy)) - ### remove the fist item in the list if its full line is off screen if not camera.entity_in_camera(self.poslist[1][self.POS_X], self.poslist[1][self.POS_Y]): self.poslist.pop(0) - #print(len(self.poslist)) - def update_draw(self, camera, isdecend=1): ### draw line from first position to next - #print(topleft) - for i in range(len(self.poslist) - 1): x1, y1 = camera.relative_to_camera(self.poslist[i][self.POS_X], self.poslist[i][self.POS_Y]) x2, y2 = camera.relative_to_camera(self.poslist[i + 1][self.POS_X], self.poslist[i + 1][self.POS_Y])