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

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

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

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

30.06.2009, 13:18. Просмотров 801. Ответов 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 раза то был конец игры!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2009, 13:18     столкновение
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

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

Столкновение - XNA
Есть несколько предметов. Я одел на каждый BoundingBox и на обьект которым я управляю. Только вот проблема, столкновение отрабатывается...

Столкновение - Unity, Unity3D
Здравствуйте. У меня возникла проблема. Я хочу сделать так чтобы при столкновение он как бы подбирался(например оружие). Для начала...


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

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

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

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

вот только с тем, что я спросил, всё остальное пашет))))
Yandex
Объявления
30.06.2009, 15:26     столкновение
Ответ Создать тему
Опции темы

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