Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nazz
WEB-developer
896 / 727 / 11
Регистрация: 12.03.2009
Сообщений: 2,802
Записей в блоге: 2
#1

столкновение - C++

30.06.2009, 13:18. Просмотров 836. Ответов 2
Метки нет (Все метки)

Ф
ребята, я вот хочу написать примитивную игру, типа гонки(так сказать) на С++, но никак не могу реализовать сталкивание(((... Посмотрите код:
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <dos.h>
#include <graphics.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
void main()
{
clrscr();
enum keys {UP = 72, DOWN = 80, LEFT=75, RIGHT=77, ESC=27};
int gmode,gdriver=DETECT;
initgraph(&gdriver,&gmode,"C:\\BC3\\BGI");
cleardevice();
setcolor(3);
rectangle(40,0,50,479);
rectangle(600,0,610,479);
rectangle(40,0,610,10);
rectangle(40,469,610,479);
int x,y,z,c,key=0,p;
int i,b,d,a,q,health,l;
a=10;
q=11;
b=12;
d=41;
x=300;
y=440;
z=340;
c=468;
    do
    {
    i=0;
    health=3;
        if (kbhit()){
            if (!(key=getch())) key=getch();
            switch (key)
            {
            case UP:
                {
                    setcolor(getbkcolor());
                    rectangle(x,y,z,c);
                    y=y-10;
                    c=c-10;
                    setcolor(GREEN);
                    rectangle(x,y,z,c);
                    break;
                }
            case DOWN:
                {
                    setcolor(getbkcolor());
                    rectangle(x,y,z,c);
                    y=y+10;
                    c=c+10;
                    setcolor(GREEN);
                    rectangle(x,y,z,c);
                    l=y-d;
                    break;
                }
            case LEFT:
                {
                    setcolor(getbkcolor());
                    rectangle(x,y,z,c);
                    x=x-10;
                    z=z-10;
                    setcolor(GREEN);
                    rectangle(x,y,z,c);
                    p=x-102;
                    break;
                }
 
            case RIGHT:
                {
                    setcolor(getbkcolor());
                    rectangle(x,y,z,c);
                    x=x+10;
                    z=z+10;
                    setcolor(GREEN);
                    rectangle(x,y,z,c);
                    break;
                }
 
 
 
}
 
        }
 
             setcolor(RED);
rectangle(52,b,102,d);
setcolor(BLACK);
rectangle(52,a,102,q);
a=a+1;
q=q+1;
b=b+1;
d=d+1;
setcolor(RED);
rectangle(52,b,102,d);
setcolor(BLACK);
rectangle(52,a,102,q);
delay(20);
 
 
 
    } while (key!=ESC || i==100);
 
 
if (p<0 && l<0);
{
health=health-1;
cout<<"Vu vtratulu odne juttya!!! ";
if (health=0)
cout<<"Vu progralu)))! ";
}
 
 
 
 
closegraph();
getch();
}

вот етот рядок
C++
1
2
3
4
5
6
7
if (p<0 && l<0);
{
health=health-1;
cout<<"Vu vtratulu odne juttya!!! ";
if (health=0)
cout<<"Vu progralu)))! ";
}
реализирует сталкивание, но вот в чём проблема: я не знаю куда его мне нужно вставить, тка как когда вставляю его после 101 строки, то происходит зацикливание, и оно выводит сообщение Vu vtratulu odne juttya!!! на екран 100 раз, тоесть глюк.... так же, естли вставит етот рядок после 80 строки, то при каждом движении указательными клавишами выводится новое сообщение Vu vtratulu odne juttya!!! (((( так что я уже просто не знаю, что делать(((( помогите, естли кто знает. Мне просто надо сделать так, что бы когда кубики сталкивались, выскакивало сообщение Vu vtratulu odne juttya!!!, а потом цыкл начинался заново)))... А естли ето произошло 3 раза то был конец игры!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2009, 13:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос столкновение (C++):

Столкновение функций - C++
У меня при работе программы получается странная ситуация: 1) включается программа 2) в дополнительном потоке включается...

Столкновение шаров - C++
Помогите пожалуйста написать условие столкновения шаров void impact(Sphera &amp; a,Sphera &amp; b) { ...

Графика С++, столкновение шаров - C++
дана задача: на экране движутся два шара разного размера и разной скоростью. Начальны размер выбирается пользователем (из 3-х вариантов),...

Столкновение объектов в играх - C++
Кто что подскажет/посоветует_почитать по поводу физики в играх, в частности столкновения объектов. (интересует само решение задач,...

Центральное столкновение шаров - C++
Здравствуйте! Написал программу для центрального столкновения двух шаров...но программа выполняется некорректно....подскажите, что не так...

Столкновение окружности с прямоугольником - C++
1) Как определить момент столкновения окружности с прямоугольником? 2) Как отразить направление окружности в момент столкновения с одной...

2
Haster
инженер-системотехник
110 / 109 / 2
Регистрация: 10.03.2009
Сообщений: 533
30.06.2009, 15:05 #2
Почему у тебя health=3 определено в самом цикле? Получается, что у тебя при каждом проходе цикла восстанавливает свое значение... А по логике вставлять нужно после 101 строки... Странно, что не работает, хотя код очень кривой ))

Добавлено через 1 минуту 3 секунды
Да и с kbhit че-то накрутил...
Нафига вот эта строка? if (!(key=getch())) key=getch();
0
Nazz
WEB-developer
896 / 727 / 11
Регистрация: 12.03.2009
Сообщений: 2,802
Записей в блоге: 2
30.06.2009, 15:26  [ТС] #3
Haster, ето не код, а только наброски!!!

С етой строкой if (!(key=getch())) key=getch(); проблем нет никаких!!!

вот только с тем, что я спросил, всё остальное пашет))))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2009, 15:26
Привет! Вот еще темы с ответами:

Столкновение двух окружностей - C++
Итак,я сталкиваю два шарика(но вообще их больше,массив). Какое-то время после старта программы все нормально,однако спустя некоторое...

Реализовать столкновение шарика со стенкой - C++
Делаю очень примитивную игру - лабиринт, необходимо чтобы шарик сталкивался со стенкой. Условие столкновения есть: if (ball.x &lt; h_wall.x...

Столкновение спрайта и закрашеного квадратика - C++
Как мне реализовать столкновение, что бы не проходить сквозь закрашенные квадраты а стоять на их,В 2д игре. За код сильно не судить брал...

Симулятор боя(Реализовать программу, позволяющую моделировать боевое столкновение двух противников, располагающих пехотой, танками и артиллерией) - C++
Симулятор боя. Реализовать программу, позволяющую моделировать боевое столкновение двух противников, располагающих пехотой, танками и...


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

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

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