我正在尝试在 pygame 上制作一款游戏,它将是二维生存。我想一一绘制我所有的物体。例如,如果我的“y”低于对象的“y”,则首先绘制该对象,而我在它的上面。这是我的主要代码:
import pygame
import random
from models.maps import *
from models.Basic import *
from models.Me import *
from models.Enemies import add_enemy,create_enemy
from models.Watch import Watch
from models.Objects import *
pygame.init()
pygame.display.set_caption('Dino Islands')
watch=Watch()
#ANIMATION WATER
water_choice=random.randint(-2,0)
water_animation_side='down'
water_animation_count=0
water_animation_time=pygame.USEREVENT+2
pygame.time.set_timer(water_animation_time,500)
def water_animation(its_x,its_y,id):
global water_animation_side,water_animation_count
sprite_image = sprites.get(id)['image']
if water_animation_side=='up':
water_animation_count-=0.002
else:
water_animation_count+=0.002
if water_animation_count<-9:
water_animation_side='down'
elif water_animation_count>9:
water_animation_side='up'
if sprite_image:
screen.blit(sprite_image[water_choice+1], ((its_x - camera_x)* TILE_SIZE, (its_y - camera_y) * TILE_SIZE-TILE_SIZE/2+water_animation_count+random.randint(-10,10)/10))
screen.blit(sprite_image[water_choice], ((its_x - camera_x)* TILE_SIZE, (its_y - camera_y) * TILE_SIZE+water_animation_count+water_animation_count+random.randint(-10,10)/10))
#DRAWING CURRENT MAP
def draw_map(my_map):
for y in range(int(camera_y), int(camera_y) + 9):
for x in range(int(camera_x), int(camera_x) + 14):
if -1 <= y < SIZE_H and 0 <= x < SIZE_W:
sprite_id = my_map[y][x]
if sprite_id!=3:
sprite_image = sprites.get(sprite_id)['image']
if sprite_image:
screen.blit(sprite_image, ((x - camera_x)* TILE_SIZE, (y - camera_y) * TILE_SIZE))
elif sprite_id==3:
water_animation(x,y,sprite_id)
running = True
while running:
keys=pygame.key.get_pressed()
m_click=pygame.mouse.get_pressed()
m_pos=pygame.mouse.get_pos()
clock.tick(60)
screen.fill((52, 152, 219))
#Main Game
if window=='game':
camera_x =max(2,min((camera_x-(camera_x-player.x)/30)-0.2,SIZE_W-2))
camera_y =max(2,min((camera_y-(camera_y-player.y)/30)-0.1,SIZE_H-2))
draw_map(lvl_1)
#ALL THE OBJECTS IN THE LIST (INCLUDE ME)
for object in objects:
object.draw(screen,camera_x,camera_y)
if player.image_cross_rect.colliderect(object.rect) and object.type=='tree':
object.hp-=player.skills['attack']
if object.type=='enemy':
object.move(player.x,player.y,object.speed)
if abs(object.x-player.x)<3 and abs(object.y-player.y)<3:
object.sees_player=True
else:
object.sees_player=False
if object.hp<=0:
objects.remove(object)
if player.rect.colliderect(object.rect):
player.hp-=object.attack
if object.type=='tree':
pass
drawing_y+=1
if drawing_y>HEIGHT:
drawing_y=0
player.control()
watch.show_time(screen)
inventory.draw(screen,(WIDTH-inventory.ile*inventory.scale)/2,HEIGHT-inventory.image.get_height()-10)
player.draw_ui(screen)
# if player.hp<=0:
# window='game_over'
pygame.display.flip()
for event in pygame.event.get():
if event.type==player.animation_count:
if player.animation_image==0:
player.animation_image=1
else:
player.animation_image=0
if player.position=='idle':
if player.direction=='right':
player.image=animation_player[player.animation_image]
if player.direction=='left':
player.image=animation_player[player.animation_image+2]
if player.direction=='up':
player.image=animation_player[player.animation_image+4]
if player.direction=='down':
player.image=animation_player[player.animation_image+6]
elif player.position=='walk':
if player.direction=='right':
player.image=animation_player[player.animation_image+8]
if player.direction=='left':
player.image=animation_player[player.animation_image+10]
if player.direction=='up':
player.image=animation_player[player.animation_image+12]
if player.direction=='down':
player.image=animation_player[player.animation_image+14]
if event.type==water_animation_time:
water_choice=random.randint(-2,0)
if event.type==add_enemy:
create_enemy()
if event.type==add_tree:
create_trees()
if event.type==pygame.MOUSEBUTTONDOWN:
if event.button==0:
print(1)
if event.button==5:
if player.item_in_hand<inventory.ile-1:
player.item_in_hand+=1
else:
player.item_in_hand=0
if event.button==4:
if player.item_in_hand>0:
player.item_in_hand-=1
else:
player.item_in_hand=inventory.ile-1
if event.type == pygame.QUIT:
running = False
pygame.quit()
但我什至不知道怎么做。请帮忙
我尝试创建一个变量“drawing_y”并检查对象的drawy是否等于“drawing_y”。但这是错误的,对象只是没有被绘制
其实我不明白你的问题,但我认为你想画一幅画 可以用这个功能来画图
import pygame as App
Screen = App.display.set_mode(Screen_Scale)
img = App.image.load("file location")
def Draw():
Screen.blit(img,"(Position = (x,y))",)