Python版跳跳方塊小游戲源代碼,跳跳益智游戲代碼,通過方向鍵的左右鍵來控制方塊向左上還右上跳躍,按R鍵重要開始游戲。相當有難度,快來挑戰你自己吧
jump_square.py
# import os
import sys
import random
import pygameBLACK = (0, 0, 0)
GREY = (169, 169, 169)
WHITE = (255, 255, 255)# os.chdir("D:\OneDrive\Code\Repository\jump-square")class Obstacle(object):def __init__(self, start_pos, x_pos) -> None:# postion initialsself.wall_y = start_posself.wall_x = x_posself.squ_y = start_pos - 165 - 630*3self.squ_x = x_pos + gen_squ_x() # load assetsself.left = pygame.image.load(".\\assets\\obstacle.jpg")self.left = pygame.transform.scale(self.left, (250, 30))self.right = pygame.image.load(".\\assets\\obstacle.jpg")self.right = pygame.transform.scale(self.right, (250, 30))self.squ = pygame.image.load(".\\assets\\obstacle.jpg")self.squ = pygame.transform.scale(self.squ, (30, 30))def update(self, player) -> None:global scoreself.wall_y += player.back_moveself.squ_y += player.back_moveif self.wall_y > 630:score += 1self.wall_y -= 950self.wall_x = gen_obstacle_x()if self.squ_y > 630:self.squ_y -= 950self.squ_x = self.wall_x + gen_squ_x()def create_map(screen, player, obstacle_0, obstacle_1, obstacle_2) -> None:global scorescreen.fill(WHITE)# obstacle initialisescreen.blit(obstacle_0.left, (obstacle_0.wall_x, obstacle_0.wall_y))screen.blit(obstacle_0.right, (obstacle_0.wall_x+380, obstacle_0.wall_y))screen.blit(obstacle_1.left, (obstacle_1.wall_x, obstacle_1.wall_y))screen.blit(obstacle_1.right, (obstacle_1.wall_x+380, obstacle_1.wall_y))screen.blit(obstacle_2.left, (obstacle_2.wall_x, obstacle_2.wall_y))screen.blit(obstacle_2.right, (obstacle_2.wall_x+380, obstacle_2.wall_y))# squaresscreen.blit(obstacle_0.squ, (obstacle_0.squ_x, obstacle_0.squ_y))screen.blit(obstacle_1.squ, (obstacle_1.squ_x, obstacle_1.squ_y))screen.blit(obstacle_2.squ, (obstacle_2.squ_x, obstacle_2.squ_y))obstacle_0.update(player)obstacle_1.update(player)obstacle_2.update(player)# player initialiseplayer.player_status = 0screen.blit(player.all_status[player.status], (player.x, player.y))player.update()# score boardfont = pygame.font.SysFont("arial", 50)screen.blit(font.render(str(score), -1, BLACK), (190, 60))pygame.display.update()def check_dead(obstacle_0, obstacle_1, obstacle_2, player, height) -> bool:ob_rect_l_0 = pygame.Rect(obstacle_0.wall_x, obstacle_0.wall_y, obstacle_0.left.get_width(), obstacle_0.left.get_height())ob_rect_r_0 = pygame.Rect(obstacle_0.wall_x+380, obstacle_0.wall_y, obstacle_0.left.get_width(), obstacle_0.left.get_height())ob_rect_s_0 = pygame.Rect(obstacle_0.squ_x, obstacle_0.squ_y, obstacle_0.squ.get_width(), obstacle_0.squ.get_height())ob_rect_l_1 = pygame.Rect(obstacle_1.wall_x, obstacle_1.wall_y, obstacle_1.left.get_width(), obstacle_1.left.get_height())ob_rect_r_1 = pygame.Rect(obstacle_1.wall_x+380, obstacle_1.wall_y, obstacle_1.left.get_width(), obstacle_1.left.get_height())ob_rect_s_1 = pygame.Rect(obstacle_1.squ_x, obstacle_1.squ_y, obstacle_1.squ.get_width(), obstacle_1.squ.get_height())ob_rect_l_2 = pygame.Rect(obstacle_2.wall_x, obstacle_2.wall_y, obstacle_2.left.get_width(), obstacle_2.left.get_height())ob_rect_r_2 = pygame.Rect(obstacle_2.wall_x+380, obstacle_2.wall_y, obstacle_2.left.get_width(), obstacle_2.left.get_height())ob_rect_s_2 = pygame.Rect(obstacle_2.squ_x, obstacle_2.squ_y, obstacle_2.squ.get_width(), obstacle_2.squ.get_height())if ob_rect_l_0.colliderect(player.size) or ob_rect_r_0.colliderect(player.size):player.dead = Truereturn Trueif ob_rect_l_1.colliderect(player.size) or ob_rect_r_1.colliderect(player.size):player.dead = Truereturn Trueif ob_rect_l_2.colliderect(player.size) or ob_rect_r_2.colliderect(player.size):player.dead = Truereturn Trueif ob_rect_s_0.colliderect(player.size) or ob_rect_s_1.colliderect(player.size) or ob_rect_s_2.colliderect(player.size):player.dead = Truereturn Trueif player.y > height:player.dead = Truereturn Truereturn Falsedef get_result(screen):final_text1 = "Game over"final_text2 = "score:" + str(score)final_text3 = "press 'R' to restart"ft1_font = pygame.font.SysFont("arial",60)ft1_surf = ft1_font.render(final_text1, 1, GREY)ft2_font = pygame.font.SysFont("arial",40)ft2_surf = ft2_font.render(final_text2, 1, GREY)ft3_font = pygame.font.SysFont("arial",30)ft3_surf = ft3_font.render(final_text3, 1, GREY)screen.blit(ft1_surf,[screen.get_width()/2-ft1_surf.get_width()/2,100])screen.blit(ft2_surf,[screen.get_width()/2-ft2_surf.get_width()/2,160])screen.blit(ft3_surf,[screen.get_width()/2-ft3_surf.get_width()/2,200])pygame.display.flip()def gen_obstacle_x() -> int:return random.randint(-200, -30)def gen_squ_x() -> int:return random.randint(250, 300)def main():global scorescore = 0# game window setupsize = width, height = 400, 630screen = pygame.display.set_mode(size)clock = pygame.time.Clock()pygame.display.set_caption("jump square")obstacle_0 = Obstacle(-360, gen_obstacle_x())obstacle_1 = Obstacle(-30, gen_obstacle_x())obstacle_2 = Obstacle(300, gen_obstacle_x())player = Player()while True:clock.tick(60)for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()if event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT and not player.dead:player.left_jump = Trueplayer.right_jump = Falseplayer.back_move = 0player.gravity = 0.5player.x_speed = 5player.jump_speed = 15elif event.key == pygame.K_RIGHT and not player.dead:player.right_jump = Trueplayer.left_jump = Falseplayer.back_move = 0player.gravity = 0.5player.x_speed = 5player.jump_speed = 15elif event.key == pygame.K_r:score = 0obstacle_0 = Obstacle(-360, gen_obstacle_x())obstacle_1 = Obstacle(-30, gen_obstacle_x())obstacle_2 = Obstacle(300, gen_obstacle_x())player = Player()if check_dead(obstacle_0, obstacle_1, obstacle_2, player, height):get_result(screen)else:create_map(screen, player, obstacle_0, obstacle_1, obstacle_2)if __name__ == "__main__":score = 0pygame.init()main()
完整程序代碼下載地址:跳跳方塊小游戲源代碼
總結
以上是生活随笔為你收集整理的Python版跳跳方块小游戏源代码,跳跳益智游戏代码的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。