when writing the code I encountered such a problem that any variable that is in this line
def inter(x1,db1, y1, y2, db2,x2 ):
is the cause of the error
TypeError: inter() missing 1 required positional argument: 'x2'
when writing the code I encountered such a problem that any variable that is in this line
def inter(x1,db1, y1, y2, db2,x2 ):
is the cause of the error
TypeError: inter() missing 1 required positional argument: 'x2'
Why are you writing in English on a Russian forum?
Show the full code or the part where you are caling this function.
Most likely you are not passing enough parameters.
For example
def multiply(x, y):
return x * y
result = multiply(2)
# instead of
# result = multiply(2, 3)
Простите не знал
Я новичёк
Вот полный код
import pygame
def inter(x1,db1, y1, y2, db2,x2 ):
if x1 > x2-db1 and x1 < x2+db2 and y1 > y2-db1 and y1 < y2+db2:
return 1
else:
return 0
pygame.init()
window= pygame.display.set_mode((400, 400))
screen = pygame.Surface((400, 400))
player= pygame. Surface((40, 40))
zet = pygame.Surface((40, 40))
arrow = pygame.Surface((20, 40))
strike = ("a_y")
count=0
myfont = pygame.font.SysFont('monospace', 15)
db2=('db1')
a_x = 1000
a_y = 1000
x_z = 0
y_z = 0
x_p=0
y_p=360
right = True
done = False
while done == False:
for e in pygame.event.get():
if e.type == pygame.QUIT:
done = True
if e.type == pygame. KEYDOWN and e.key== pygame.K_s:
y_p += 5
if e.type == pygame.KEYDOWN and e.key == pygame.K_w:
y_p -= 5
if e.type == pygame.KEYDOWN and e.key == pygame.K_a:
x_p -= 5
if e.type == pygame.KEYDOWN and e.key == pygame.K_d:
x_p += 5
if e.type == pygame.KEYDOWN and e.key == pygame.K_SPACE:
if strike == False:
strike = True
a_x = x_p
a_y = y_p - 40
if strike:
a_y -= 0.5
if a_y < 0:
strike = False
a_y = 1000
a_x = 1000
if inter(a_x,a_y,x_z,y_z,db2):
count += 1
if right:
x_z += 1
if x_z > 400:
x_z -= 1
right = False
else:
x_z -= 1
if x_z < 0:
x_z += 1
right = True
string = myfont.render('Очков: '+str(count), 0,(255,0,0))
screen.fill((0,255,0))
screen.blit(string, (0, 50))
screen.blit(arrow, (a_x, a_y))
screen.blit(zet, (x_z, y_z))
screen.blit(player, (x_p, y_p))
window.blit(screen, (0, 0))
pygame.display.update()
pygame.quit()
принимает 6 параметров:
передается 5 параметров:
Большое спасибо, но теперь выдает
NameError: name ‘db1’ is not defined
когда я сделал так
db2=(‘db1’)
db1=(‘db2’)
выдало
TypeError: unsupported operand type(s) for -: ‘str’ and ‘float’
Так функция явно с числами что-то делает
зачем строки передавать?)
хороший вопрос
Может это будет странный вопрос для тебя, но что вы имели ввиду под фразой
“зачем строки передавать”
просто все что я находил по этой теме-это оператор “print”
'db2'
это строка, а не число. Функция делает какие-то арифметические операции с числами. Нет смысла передавать ей не число.
то есть надо просто “преобразовать” из ‘str’ в ‘int’?
Ну значение db2
чот не очень похоже на число. Числа это что-нибудь типа 0, 1, 2, 3, 42, 100500, -100500, …
Надо разобраться какая задача и что тут происходить должно.
я пишу по образцам, поэтому я и сам не особо понимаю
по задумке это должны быть величины персонажей