Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
1

столкновение

30.06.2009, 13:18. Просмотров 994. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2009, 13:18
Ответы с готовыми решениями:

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

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

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

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

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

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

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

вот только с тем, что я спросил, всё остальное пашет))))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2009, 15:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Центральное столкновение шаров
Здравствуйте! Написал программу для центрального столкновения двух шаров...но программа...

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

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

Реализовать столкновение шарика со стенкой
Делаю очень примитивную игру - лабиринт, необходимо чтобы шарик сталкивался со стенкой. Условие...


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

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

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