1 / 1 / 0
Регистрация: 14.08.2012
Сообщений: 14
1

Ошибка при запуске программы, не могу понять в чем дело

14.08.2012, 20:12. Показов 2485. Ответов 7
Метки нет (Все метки)

Ну что же, семпаи, прошу помочь и объяснить как обойти ошибку. Ниже приведу текст программы, программа должна запускать окно в котором появляются 5 кругов со случайным начальным положением, случайного размера и цвета, которые двигаются в случайном направлении и отбиваются от границ окна.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env python
#coding=utf-8
 
import pygame
import sys
import random
 
class Circle:
    def __init__(self, screenSize):
        self.screenSize=screenSize
        self.radius = random.randint(20, screenSize[0]/6)
        self.y = random.randint(self.radius, screenSize[1])
        self.x = random.randint(self.radius, screenSize[0])
        self.circleColor = (random.randint(0,255),random.randint(0,10),random.randint(0,10))
        self.xSpeed=random.randint(-100,100)
        self.ySpeed=random.randint(-100,100)
    
    def contain(self, xx, yy):
        if self.x <= xx <= self.x + self.radius:
            if self.y<= yy <= self.y + self.radius:
                return True
        return False
    
    def move(self, sec):
        self.x+=sec*self.xSpeed
        self.y+=sec*self.ySpeed
        
        if self.x + self.radius > self.screenSize[0]:
            self.xSpeed=-self.xSpeed
            self.x=self.screenSize[0]-self.radius
        if self.x<0:
           self.xSpeed=-self.xSpeed
           self.x=0
        if self.y + self.radius > self.screenSize[1]:
           self.ySpeed=-self.ySpeed
           self.y=self.screenSize[1]-self.radius
        if self.y<0:
           self.ySpeed=-self.ySpeed
           self.y=0
 
    def draw(self,screen):
       pygame.draw.circle (screen, self.circleColor, (self.x,self.y), self.radius)
       
 
pygame.init()
timer = pygame.time.Clock()
 
screenSize = (800,600)
screenColor = (255,255,255)
screen = pygame.display.set_mode (screenSize)
 
n=5
 
circleList=[]
for i in range(n):
    circle = Circle(screenSize)
    circleList.append(circle)
 
while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if (event.type == pygame.KEYDOWN):
            if (event.key == pygame.K_ESCAPE):
                pygame.quit()
                sys.exit()            
        if event.type == pygame.MOUSEBUTTONDOWN:
            xx,yy = pygame.mouse.get_pos()
            for i in range(len(circleList)):
                if circleList[i].contain(xx,yy):
                    circleList[i]=Circle(screenSize)
 
 
    sec = timer.tick() / 1000.  
    for circle in circleList:
        circle.move(sec)
 
 
    screen.lock()
    pygame.draw.rect (screen, screenColor, pygame.Rect((0,0), screenSize))
    for circle in circleList:
        circle.draw(screen)
    screen.unlock()
    
    pygame.display.update()
при запуске программы выдает следующую ошибку:

Traceback (most recent call last):
File "E:\soft\Программировние\Python\Program\day2Circle.py", line 83, in <module>
circle.draw(screen)
File "E:\soft\Программировние\Python\Program\day2Circle.py", line 42, in draw
pygame.draw.circle (screen, self.circleColor, (self.x,self.y), self.radius)
TypeError: integer argument expected, got float

Я понимаю, что вместо ожидаемого целого функция получает аргумент вещественного типа. Но не понимаю откуда может взяться вещественный.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2012, 20:12
Ответы с готовыми решениями:

Ошибка памяти при выполнении - не могу понять в чём дело
Добрый день. Есть следующий код: #include &lt;iostream&gt; using namespace std; class Matrix {...

Запуск программы *exe я в отчаянии) не могу понять в чём дело
В общем есть у меня программа (123D catch), которая работала у меня буквально позавчера и вот она...

ошибка в программе и не могу понять в чем дело
#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;cstdlib&gt; int main( int a,...

Ошибка в шаблоне.не могу понять в чем дело?
сайт уже пару месяцев...и не давно полетел шаблон на некоторых страницах вот одна из них...

7
4859 / 3280 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.08.2012, 07:47 2
Python
1
2
3
4
5
    def draw(self, screen):
        pygame.draw.circle(screen,
                           self.circleColor,
                           (self.x, self.y),
                           self.radius)
запусти в таком виде
0
1 / 1 / 0
Регистрация: 14.08.2012
Сообщений: 14
15.08.2012, 15:13  [ТС] 3
Попробовал, не сработало. Да вроде и не должно было сработать, ведь мы ничего не изменили по сути.
0
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 964
Записей в блоге: 16
15.08.2012, 18:33 4
каждая переменная на отдельной строке, так легче найти переменную, на которой происходит TypeError.
0
1 / 1 / 0
Регистрация: 14.08.2012
Сообщений: 14
15.08.2012, 20:21  [ТС] 5
Ок, переменную нашли

File "E:\soft\Программировние\Python\Program\day2Circle.py", line 87, in <module>
circle.draw(screen)
File "E:\soft\Программировние\Python\Program\day2Circle.py", line 46, in draw
self.radius)
TypeError: integer argument expected, got float

Переменная задается в троке 12
Python
1
self.radius = random.randint(20, screenSize[0]/6)
Но даже, если записать так: self.radius = 20 всё равно ошибка выйдет та же
0
4859 / 3280 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.08.2012, 02:00 6
а int(self.radius) ?
1
1 / 1 / 0
Регистрация: 14.08.2012
Сообщений: 14
23.08.2012, 03:53  [ТС] 7
Цитата Сообщение от accept Посмотреть сообщение
а int(self.radius) ?
Спасибо, правда странно, что ругонь шла на радиус. Проблему решило приведение к типу координат центра:
pygame.draw.circle (screen, self.circleColor, (int(self.x), int(self.y)), self.radius)

Дело было в том что у меня скорости перемещения координат центров кругов были привязаны к таймеру, а количество секунд были указаны с точкой, получались дробные цифры отсюда
0
4859 / 3280 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
23.08.2012, 05:20 8
лучше приводить их там, где они становятся дробными
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2012, 05:20
Помогаю со студенческими работами здесь

Синтаксическая ошибка в .IF, не могу понять в чем дело
Заранее благодарен.

Ошибка в коде T-SQL, не могу понять в чем дело...
Всем привет и всех мужчин с праздником! У меня такой вопрос, есть таблица в ней находятся двы...

Не могу понять в чем дело. Ошибки при загрузке Kali Linux
Доброго дня устанавливаю Kali Linux с USB все встает отлично мое железо НО После установки...

Есть программа, но при при вызове одной функции из main Visual Studio показывает ошибку. Не могу понять в чём дело
#include&lt;iostream&gt; #include&lt;vector&gt; using namespace std; struct Basket { int made; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru