Форум программистов, компьютерный форум CyberForum.ru

Отслеживание границ объектов (Арканоид) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите разобраться с циклом while. http://www.cyberforum.ru/cpp-beginners/thread575342.html
Здравствуйте. Уже долго мучаюсь с крестиками-ноликами. Наконец то подошел финал, как вдруг на самом простом запутался. Помогите разобраться. Без циклов while программа работает как часы, но с ними выполнение прекращается на приветствии. Где же ошибка? int main(){ setlocale (LC_ALL, "Russian"); cout <<"Приветствуем в игре Крестики-нолики!\n"; char reply= "y"; int x_wins=0, o_wins=0,...
C++ Дан список слов, разделенных между собой пробелами Дан список слов, разделенных между собой пробелами. Составить программу поиска количества слов, у которых первая и последняя буквы совпадают между собой. http://www.cyberforum.ru/cpp-beginners/thread575341.html
Дано предложение без знаков препинания C++
Дано предложение без знаков препинания. Составить программу определения количества слов, начинающихся с гласной буквы. Добавлено через 5 часов 9 минут ответьте плз Добавлено через 12 секунд ответьте плз
Транспонировать массив C++
Привет всем, ребят помогите написать программу, нужно массив M транспонировать и распечатать.
C++ Перегрузка операций http://www.cyberforum.ru/cpp-beginners/thread575329.html
Добрый день форумчане, помогите решить задачку Перегрузить 8 операторов для класса Вот пример класса class Money{ unsigned long banknot; unsigned int kop; char name; } требования:
C++ В упорядоченном по возрастанию массиве найти элементы В упорядоченном по возрастанию массиве найти элементы, меньшие среднего арифметического всех положительных элементов. Нахождение среднего арифметического реализовать в виде функции. подробнее

Показать сообщение отдельно
paranoya
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 9
16.05.2012, 13:39  [ТС]     Отслеживание границ объектов (Арканоид)
Переделал - стало лучше, но не настолько, насколько хотелось бы - первый блок просто пролетает насквозь.
Подскажите, пожалуйста, ведь по логике все должно работать хорошо.

И, если кто-нибудь знает, подскажите формулу отскока мяча после столкновения.

Вот весь код:

C++
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
#include <stdlib.h>
#include <cstdlib>
#include <stdio.h>
#include <math.h>
#include <graphics.h>
 
void drawblock(int x, int y) {
setfillstyle ( 1, 10 ); 
bar (x, y, x+100, y+40);   
}
    
void drawball(int x, int y) {
setcolor(15);
setfillstyle ( 1, 4 ); 
circle ( x, y, 10 );  
floodfill(x+5,y+5,15);
}
 
void drawplat(int x, int y) {
setfillstyle ( 1, 1 ); 
bar (x, y, x+80, y+20);   
}
 
 
 
void lvl1() {
    int x,y;
    int a=0,b=0;
    int x_blockarray[a][b];
    int y_blockarray[a][b];
    initwindow (640, 480); 
    for (y=20;y<=140;y+=120) {
        b=0;
        for (x=20;x<=440;x+=140) {
            drawblock(x,y);
            x_blockarray[a][b] = x;
            y_blockarray[a][b] = y;
 
            b++;
            }
        a++;
        }
 
    for (y=80;y<=200;y+=120) {
        b=0;
        for (x=100;x<=520;x+=140) {
            drawblock(x,y);
            x_blockarray[a][b] = x;
            y_blockarray[a][b] = y;
            }
        a++;
        }
    drawplat(280, 440);
    x=310;
    y=420;
    while (y<470) {
          x=x;
          y=y-10;
          drawball(x, y);
          delay(100);
          setfillstyle(1, 0);
          bar (x-10, y-10, x+10, y+10); 
          for (a=0;a<=3;a++){
              for (b=0;b<=3;b++){
                  if (((x>=x_blockarray[a][b])&&(x<=x_blockarray[a][b]+100) && y == y_blockarray[a][b]+40)  || ((x>=x_blockarray[a][b])&&(x<=x_blockarray[a][b]+100) && y == y_blockarray[a][b])) {
                         x=x-20;
                         y=y+10;
                         setfillstyle(1, 0);
                         bar (x_blockarray[a][b], y_blockarray[a][b], x_blockarray[a][b]+100, y_blockarray[a][b]+40); 
                         x_blockarray[a][b] = -120;
                         y_blockarray[a][b] = -40;
                                }
                         }
                  }
            }
}
 
 
int main() {
    lvl1();
    system("PAUSE");
}
Вот проблемная часть:

C++
1
2
3
4
5
6
7
8
9
10
11
12
          for (a=0;a<=3;a++){
              for (b=0;b<=3;b++){
                  if (((x>=x_blockarray[a][b])&&(x<=x_blockarray[a][b]+100) && y == y_blockarray[a][b]+40)  || ((x>=x_blockarray[a][b])&&(x<=x_blockarray[a][b]+100) && y == y_blockarray[a][b])) {
                         x=x-20;
                         y=y+10;
                         setfillstyle(1, 0);
                         bar (x_blockarray[a][b], y_blockarray[a][b], x_blockarray[a][b]+100, y_blockarray[a][b]+40); 
                         x_blockarray[a][b] = -120;
                         y_blockarray[a][b] = -40;
                                }
                         }
                  }
Добавлено через 3 минуты
Еще бамп

Добавлено через 5 минут
Помогите, посоны.

Добавлено через 44 минуты
Еще один бамп

Добавлено через 20 минут
Помогите, пожалуйста :3 курсовую через день сдавать.

Добавлено через 18 часов 21 минуту
Народ, помогите, пожалуйста :3
 
Текущее время: 22:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru