Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
DonMidNight
5 / 5 / 0
Регистрация: 06.11.2013
Сообщений: 37
#1

Кажется что приложение работает неверно - Программирование iOS

19.03.2014, 23:58. Просмотров 477. Ответов 6
Метки нет (Все метки)

Доброго времени суток. Написал простенький теннис. Но мне кажется что что то не так работает, а именно при начале игры мяч то со скоростью света летин, то еле еле движется, Порой мячик вообще принимает 1 траекторию и движется по ней (опять же может с бешеной скоростью а может и еле еле) ну и + еще компьютер победить очень сложно. Вот коды ко всем этим движениям

Старт игры (скорость мяча разная)
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-(IBAction)StartGame:(id)sender {
    
    StartGame.hidden = YES;
    Exit.hidden = YES;
    
    y = arc4random() % 11;
    y = y - 4;
    x = arc4random() % 11;
    x = x - 4;
    if (y==0) {
        y = 1;
    }
        if (x==0) {
            x = 1;
        }
   timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target: self selector: @selector(BallMovement) userInfo: nil repeats:YES];
}
Движение доски компьютера
Objective-C
1
2
3
4
5
6
7
8
-(void) ComputerMovement {
    if (Computer.center.x > Ball.center.x) {
        Computer.center = CGPointMake(Computer.center. x - 2, Computer.center. y );
    }
        
        if (Computer.center.x < Ball.center.x) {
            Computer.center = CGPointMake(Computer.center. x + 2, Computer.center. y );
        }
Движение мяча

Objective-C
1
2
3
4
5
6
7
8
9
10
-(void) BallMovement {
    [self ComputerMovement];
    [self Bump];
    
    
    Ball.center = CGPointMake(Ball.center.x + x , Ball.center. y + y );
    if (Ball.center.x < 10) {
        x = 0 - x; }
    if (Ball.center.x > 310) {
        x = 0 - x;

Отскоки мяча
Objective-C
1
2
3
4
5
6
7
8
9
10
-(void) Bump {
    if (CGRectIntersectsRect(Ball.frame, Gamer.frame)) {
        y = arc4random() % 8;
        y = 0 - y;
    }
    
    if (CGRectIntersectsRect(Ball.frame, Computer.frame)) {
        y = arc4random() % 8;
       // y = 0 + y;
    }
Или я просто придираюсь? Заранее благодарю
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2014, 23:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Кажется что приложение работает неверно (Программирование iOS):

От Apple приходит ответ, что приложение крашится
Здравствуйте! Некоторое время назад писал одно приложение на Unity. Приложение...

Во что компилируется Objective-C приложение
Всем привет! Во что компилируется приложение, написанное на Objective-C?...

Нужно мобильное приложение. Что требовать от разработчиков?
Всем привет! Опытные разработчики помогите советом! Мне нужно приложение,...

Приложение неверно работает на Windows 8.1(x64)
Здравствуйте. Разрабатываю wpf-проект и появилась необходимость написать...

Кажется, что-то с кодировкой
Пишу сообщение по русски в echo, и вместо него вылазит кракозябра. из-за чего...

Кажется что-то удалил
Здравствуйте скажите пожалуйста здесь Где пишит Служба доступа к файлам...

6
Vorona
Peace 2 all shining faces
671 / 533 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
20.03.2014, 00:25 #2
какая-то куча рендомов...
0
DonMidNight
5 / 5 / 0
Регистрация: 06.11.2013
Сообщений: 37
20.03.2014, 09:10  [ТС] #3
А разьве не рандомно все должно быть?
0
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
20.03.2014, 11:06 #4
У меня глаза выпали от того, что вы написали.
Шарик ведет себя неадекватно, ибо не адекватен ваш код.
Вот чего например вы хотите добиться этим:
Objective-C
1
2
3
4
if (CGRectIntersectsRect(Ball.frame, Gamer.frame)) {
        y = arc4random() % 8;
        y = 0 - y;
    }
Цитата Сообщение от DonMidNight Посмотреть сообщение
А разьве не рандомно все должно быть?
Что-то может быть рандомным, но точно не ВСЕ, как у вас.
0
DonMidNight
5 / 5 / 0
Регистрация: 06.11.2013
Сообщений: 37
20.03.2014, 11:23  [ТС] #5
Да вот и я понимаю что что то неправильно, да вот не могу додумать что именно, поэтому и обратился к вам на форум, чтобы вы помогли научиться мне понимать и разбирать собственные ошибки. Натолкните меня на правильный путь. И как мне нужно поправить код. А в выше указанном вами куске кода , я намеривался определить коснулся ли мячик ракетки или нет
0
Victorianec
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
20.03.2014, 12:35 #6
Лучший ответ Сообщение было отмечено DonMidNight как решение

Решение

DonMidNight, Мне кажется Вам нужно пересмотреть именно математическую модель Вашей игры. Например высчитывать скорость мяча как произведение текущей скорости мяча на коэффициент от скорости движения ракетки во время их столкновения или что-то подобное. На старте я бы выставил скорость движения всегда одинаковую. Отскок мяча тоже стоило бы сделать с учетом хоть простейших законов физики.
1
DonMidNight
5 / 5 / 0
Регистрация: 06.11.2013
Сообщений: 37
20.03.2014, 13:12  [ТС] #7
Спасибо буду додумывать)
0
20.03.2014, 13:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2014, 13:12
Привет! Вот еще темы с решениями:

Почему не работает, ведь кажется правильно!
Здравствуйте уважаемые форумчане. В переменной $content есть ссылка такого...

radeon hd 4870, кажется, работает неполноценно.
я хочу понять работает ли моя карта как должна , по моему нет , сравниваю свои...

Функция корректно работает в Delphi 7 и не неверно работает в RAD Studio 10
Переписываю свою программу с Delphi 7 под RAD Studio 10. Столкнулся с...

матрица. кажется что легко, но не получилось
В гостинице N этажей и на каждом этаже R номеров. В матрице указана стоимость...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru