Неправильный порядок отображения спрайтов в pygame Ссылка на пастбин с кодом: https://pastebin.com/8MMnbaDU import pygame, sys class MyBallClass(pygame.sprite.Sprite): def __init__(self,image_file,speed,location): pygame.sprite.Sprite.__init__(self) self.image=pygame.image.load('football.png') self.image=pygame.transform.scale(self.image,(30,30)) self.rect=self.image.get_rect() self.rect.left, self.rect.top=location self.speed=speed def move(self): global score, score_surf, score_font self.rect=self.rect.move(self.speed) if self.rect.left<0 or self.rect.right>screen.get_width(): self.speed[0]=-self.speed[0] if self.rect.top<=0: self.speed[1]=-self.speed[1] score=score+1 score_surf=score_font.render(str(score),1,(0,0,0))
class MyPaddleClass(pygame.sprite.Sprite): def __init__(self,location=[0,0]): pygame.sprite.Sprite.__init__(self) self.image=pygame.image.load('footballer.png') self.image=pygame.transform.scale(self.image,(150,220)) self.rect=self.image.get_rect() self.rect.left,self.rect.top=location
while running: clock.tick(30) pole_surf=pygame.image.load('pole.png') pole_surf=pygame.transform.scale(pole_surf,(460,320)) pole_rect=pole_surf.get_rect(center=(230,160)) screen.blit(pole_surf,pole_rect) pygame.display.flip() for event in pygame.event.get(): if event.type==pygame.QUIT: running=False elif event.type==pygame.MOUSEMOTION: paddle.rect.centerx=event.pos[0]
if pygame.sprite.spritecollide(paddle, ballGroup, False): myBall.speed[1]=-myBall.speed[1] pygame.display.flip()
myBall.move() if not done: screen.blit(myBall.image, myBall.rect) screen.blit(paddle.image, paddle.rect) screen.blit(score_surf, score_pos) pygame.display.flip() for i in range (lives): width=screen.get_width() screen.blit(myBall.image, [width - 40*i, 20]) pygame.display.flip() pygame.display.flip()
Ну, площадь круга, допустим, вычисляется по формуле
S = pi*R^2.
Ну а кольца из большего круга вычитаем меньший, получим
Sk = pi*(R1^2 - R2^2)
Вот собственно и всё.
Программы тут и нет, так, пара операторов, например
Пи=3,141592653;
Ввод(R1,R2);
S = Пи*ABS(R1*R1-R2*R2);
Сообщить(R1,R2,S);
Замечание1. Модуль (ABS) обязателен, для снятия ограничений на порядок ввода радиусов. При таком подходе порядок(больший-меньший или наоборот) роли НЕ ИГРАЕТ!
Замечание2 Написано некоем псевдоязыке, с которого легко переведёшь на тот, которым владеешь.
Program pr1; Var A : array [1..4, 1..4] of integer ; {резервирование памяти под массив А (4 на 4)} i,j, max, p, k: integer ; {переменные i,j вводятся как индексы массива} Begin randomize; For i:=1 to 4 do For j:=1 to 4 do A[i,j]:=random (100); {ввод элемента матрицы} max:=A[1,1]; k:=1; p:=1; {первоначальное предположение} For i:=1 to 4 do For j:=1 to 4 do if A[i,j]>max then begin {Если текущий элемент больше максимального } max:=A[i,j]; {max = A[i,j], запоминаем индексы текущего элемента} k:=i; p:=j; end;
writeln('Исходный массив:'); For i:=1 to 4 do begin For j:=1 to 4 do write (A[i,j], ' '); writeln; end;
Ну, площадь круга, допустим, вычисляется по формуле
S = pi*R^2.
Ну а кольца из большего круга вычитаем меньший, получим
Sk = pi*(R1^2 - R2^2)
Вот собственно и всё.
Программы тут и нет, так, пара операторов, например
Пи=3,141592653;
Ввод(R1,R2);
S = Пи*ABS(R1*R1-R2*R2);
Сообщить(R1,R2,S);
Замечание1. Модуль (ABS) обязателен, для снятия ограничений на порядок ввода радиусов. При таком подходе порядок(больший-меньший или наоборот) роли НЕ ИГРАЕТ!
Замечание2 Написано некоем псевдоязыке, с которого легко переведёшь на тот, которым владеешь.
Program pr1;
Var A : array [1..4, 1..4] of integer ; {резервирование памяти под массив А (4 на 4)}
i,j, max, p, k: integer ; {переменные i,j вводятся как индексы массива}
Begin
randomize;
For i:=1 to 4 do
For j:=1 to 4 do
A[i,j]:=random (100); {ввод элемента матрицы}
max:=A[1,1]; k:=1; p:=1; {первоначальное предположение}
For i:=1 to 4 do
For j:=1 to 4 do
if A[i,j]>max then begin {Если текущий элемент больше максимального }
max:=A[i,j]; {max = A[i,j], запоминаем индексы текущего элемента}
k:=i;
p:=j;
end;
writeln('Исходный массив:');
For i:=1 to 4 do begin
For j:=1 to 4 do
write (A[i,j], ' ');
writeln;
end;
a[k, p] := a[k, p] + a[1, 1]; // добавленные строки
a[1, 1] := a[k, p] - a[1, 1];
a[k, p] := a[k, p] - a[1, 1];
writeln('Преобразованный массив:');
For i:=1 to 4 do begin
For j:=1 to 4 do
write (A[i,j], ' ');
writeln;
end;
writeln ('Максимальный элемент матрицы = ', max);
write ('Он находится в строке №' , k);
writeln (' и в столбце №' , p);
end.