Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 08.07.2018
Сообщений: 18
1

длительный пролаг в проге

08.09.2018, 14:21. Показов 392. Ответов 1
Метки нет (Все метки)

пишу змейку, прошу не придираться - а зачем этот инклюд или тому подобное, гото тоже не пугайтесь ибо там все рядом и не страшно, так вот - возможно через опу, но я сделал хвост, и столкнулся с проблемой - фрукт может появится в хвосте. и я поступил так - у меня есть функция - srch(), которой дается 2 координаты x и y и 2 массива - один с x другой c y координатами хвоста и если от 0 элемента до элемента (счет -1) встретится равная пара x y и x y хвоста функция вернет 1, так вот я написал функцию random, которая изначально делала координаты "фрукта" случайными и теперь поступил так - если новые рандомные коорды фрукта в функции srch()с хвостом дают 1 (т.е фрукт появится в хвосте) то рандомим заново с помощью гото (here), так воот, иногда когда змейка ест фрукт все норм, а иногда(я предпологаю что это из за того,что фрукт появляется в хвосте, но не появляется ибо рандомим его коорды заного) от 2 до 5 секунд программа пролагивает и только потом появляется фрукт, фиксится ли это? если видите что мой код слишком кривой, прошу отписать в каком конкретно месте

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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include"stdafx.h"
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <stdio.h>
#include <ctime>
#include <time.h>
#include <conio.h>
using namespace std;
typedef unsigned short int usi;
usi score=0;
bool srch(usi x, usi y, usi arrX[], usi arrY[])
{
    for (usi i = 0; i < score; i++)
    {
        if (arrX[i] == x && arrY[i] == y) return 1;
    }
    return 0;
}
void draw( usi sx, usi sy, usi fx, usi fy, usi *arrX, usi *arrY)
{
    system("cls");
    for (usi y = 20; y >= 1; y--)
    {
        for (usi x = 1; x <= 20; x++)
        {
            if (y == 1 || y == 20)
            {
                cout << "#";
            }
            else if (x == 1 || x == 20)
            {
                cout << '#';
            }
            else if (x == sx && y == sy)
            {
                cout << "@";
            }
            else if ( x == fx && y == fy)
            {
                cout << 'O';
            }
            else if (srch(x, y, arrX, arrY) == 1)
            {
                cout << '*';
            }
            else
                cout << " ";
        }
        cout << endl;
    }
}
void random(usi *fx, usi *fy, usi xx[], usi xy[])
{
here:
        srand(time(NULL));
        *fx = rand() % 17 + 2;
        *fy = rand() % 17 + 2;
        if (srch(*fx, *fy, xx, xy)) goto here;
}
void rando(usi *fx, usi *fy)
{
    srand(time(NULL));
        *fx = rand() % 17 + 2;
        *fy = rand() % 17 + 2;
}
void masspp(usi *arrX, usi *arrY)
{
    for (usi i = 323; i > 0; i--)
    {
        arrX[i] = arrX[i - 1];
        arrY[i] = arrY[i - 1];
    }
}
int main()
{
    char move;
    usi xbotX[324];
    usi xbotY[324];
    usi sneakX = 14, sneakY = 13, fruitX = 12, fruitY = 12;
    xbotX[0] = sneakX;
    xbotY[0] = sneakY;
    draw(sneakX, sneakY, fruitX, fruitY, xbotX, xbotY);
    while (true)
        switch (_getch())
        {
        case'w':
        {
            masspp(xbotX, xbotY);
            xbotX[0] = sneakX;
            xbotY[0] = sneakY;
            sneakY++;
            if (sneakY == 20) sneakY = 2;
            if (fruitX == sneakX && fruitY == sneakY)
            {
                score++;
                random(&fruitX, &fruitY, xbotX, xbotY);
            }
            draw(sneakX, sneakY, fruitX, fruitY, xbotX, xbotY);
            break;
        }
        case 's':
        {
            masspp(xbotX, xbotY);
            xbotX[0] = sneakX;
            xbotY[0] = sneakY;
            sneakY--;
            if (sneakY == 1) sneakY = 19;
            else if (sneakY == 20) sneakY == 2;
            if (fruitX == sneakX && fruitY == sneakY)
            {
                score++;
                random(&fruitX, &fruitY, xbotX, xbotY);
            }
            draw(sneakX, sneakY, fruitX, fruitY, xbotX, xbotY);
            break;
        }
        case 'a':
        {
            masspp(xbotX, xbotY);
            xbotX[0] = sneakX;
            xbotY[0] = sneakY;
            sneakX--;
            if (sneakX == 1) sneakX = 19;
            if (fruitX == sneakX && fruitY == sneakY)
            {
                score++;
                random(&fruitX, &fruitY, xbotX, xbotY);
            }
            draw(sneakX, sneakY, fruitX, fruitY, xbotX, xbotY);
            break;
        }
        case 'd':
        {
            masspp(xbotX, xbotY);
            xbotX[0] = sneakX;
            xbotY[0] = sneakY;
            sneakX++;
            if (sneakX == 20) sneakX = 2;
            if (fruitX == sneakX && fruitY == sneakY)
            {
                score++;
                random(&fruitX, &fruitY, xbotX, xbotY);
            }
            draw(sneakX, sneakY, fruitX, fruitY, xbotX, xbotY);
            break;
        }
        case'v': goto indexare ;
        }
indexare:
    system("cls");
    cout << "You score is "<<score << endl;
    system("pause");
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2018, 14:21
Ответы с готовыми решениями:

Если ярлыка к проге нет, то Создать ярлык к проге по адресу (текущий адрес)
Подскажите plz фичу: Если ярлыка к проге нет, то Создать ярлык к проге по адресу (текущий адрес)

Длительный простой приложения
Суть проблемы: Флешка висит запущенная в браузере и шлет sendandload-ом раз в 3-5 секунд POST...

Длительный просчет видео
Был ноутбук i3 2310 2,3 Hz RAM 10 Gb GeForce 540M 2Gb SSD 120 Gb HDD 500 Gb начал собирать...

Практичный ноутбук на длительный период
Доброго времени суток. Помоги с выбором ноутбука. регион: Москва бюджет: 30 000 - 35 000 Будет...

1
1354 / 992 / 314
Регистрация: 28.07.2012
Сообщений: 2,750
08.09.2018, 17:21 2
Цитата Сообщение от silenseram Посмотреть сообщение
srand(time(NULL));
Удали это отовсюду и вставь в единственном экземпляре в начале main. Чтобы понять почему так, а не иначе, почитай про генераторы псевдослучайных чисел.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2018, 17:21

Выбор хостинг-сервера на длительный период
Планирую приобрести платный хостинг на длительный период. Есть варианты на 1 год, есть на 2 и...

UTorrent после перезапуска запускает длительный чекинг
Всем привет, Использую uTorrent 3.4.1 - он хорош, кроме того что при перезапуске компа начинает...

Ping до сайтов через модем очень длительный
Короче стоит оптика, если кабель сразу в ПК засуну то пинг 1мс. при этом само собой создается...

Длительный запрос с клиента (ожидание действия на сайте)
Ребят помогите сделать, мне нужно чтобы мой клиент на C# посылал запрос на сайт long poll или как...


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

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

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