С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 32
1

Написать игру. В верхней части экрана летят 3 «звездочки»(***). В нижнем правом углу экрана находиться буква «О»

21.02.2013, 12:04. Показов 2001. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать игру. В верхней части экрана летят 3 «звездочки»(***). В нижнем правом углу экрана находиться буква «О». После нажатия любой клавиши она движется вверх. Нужно попасть буквой «O» в среднюю «звездочку»

Как это примерно реализовать? Понимаю, что всю программу тут никто писать не будет, просто подскажите, как это сделать средствами Борланда, без графики, через CONIO.H

Добавлено через 45 минут
up.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2013, 12:04
Ответы с готовыми решениями:

Прозрачный текст в правом нижнем углу экрана
Всем привет. Не знал в какой ветке C# создать тему решил тут. Есть задача создать программу которая...

Открыть форму в правом нижнем углу экрана
Привет всем.У меня такая ситуация,мне надо чтоБы при открытии программы она открылась справа внизу...

Выведите строку в правом углу экрана, вставив в нее звездочки
Задание 1:Заполните экран синим цветом. Введите строку с клавиатур. Выведите строку в правом углу...

Как показать форму в правом нижнем углу экрана?
Как показать форму в правом нижнем углу экрана?

4
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 974
21.02.2013, 12:57 2
1. Узнать через WinAPI высоту/ширину консоли.
2. Запустить поток который будет перемещать верхние кружки.
3. Ждать в главном потоке нажатия клавиши.
0
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 32
22.02.2013, 22:57  [ТС] 3
Цитата Сообщение от Пaтрик Посмотреть сообщение
1. Узнать через WinAPI высоту/ширину консоли.
2. Запустить поток который будет перемещать верхние кружки.
3. Ждать в главном потоке нажатия клавиши.
Я, кажется, ясно выразился - средствами Борланда, версия 3,1. Через conio.h , gotoxy и прочее

Добавлено через 9 часов 14 минут
Пока вот так. Не могу толком сделать так, чтобы программа завершалась при нажатии ESC, пока приходится через CTRL+BREAK. Теперь появился такой вопрос - как параллельно с движением этих трех звездочек организвать "выстреливание" буквой О. Помогите пожалуйста, очень нужно.
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
#include<conio.h>
#include<iostream.h>
#include<dos.h>
 
int main(void)
{
   clrscr();
   int i,j,m,n,esc,start;
   j=1;
   start=getch();
   do
{
   if (start !=27)
   {
   for(i=0;i<74;i++)
   {
   gotoxy(i,j);
   cout<<"***";
   delay(100);
   do clrscr(); while (i>73);
   };
   for(i=74;i>0;i--)
   {
 
   gotoxy(i,j);
   cout<<"***";
   delay(100);
   do clrscr(); while (i<1);
   };
 
           }    } while (start !=27);
 
   return 0;
}
Добавлено через 1 час 44 минуты
Ап.
0
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 32
25.02.2013, 13:58  [ТС] 4
Up.

Добавлено через 2 часа 55 минут
up.
0
64 / 64 / 33
Регистрация: 12.08.2012
Сообщений: 151
25.02.2013, 14:20 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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
// Тихонов Владимир, [email]Tikhonow.Vladimir@gmail.com[/email]
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
#define BLUE 9
#define GREEN 10
#define WHITE 11
#define RED 12
#define YELLOW 14
#define VERTICAL_SPEED 140 // чем больше показатель, тем меньше скорость
#define HORISONTAL_SPEED 70
using namespace std;
//--------------------------------------------------------------------------------------------------------------------------
COORD AppleCord = {0,0}; // координаты яблока
COORD coord[100] = {0}; // коордиаты змеи
int direction = 4; //направление движения : 1 - вверх, 2 - вниз, 3 - влево, 4 - вправо.
int SnakeLength = 6; // длинна змеи
void SetAndDraw(int x, int y, char symbol[100] = "_", int color = WHITE); // умеет двигать курсор, выводить любой текст
//разными цветами
void DrawInfo(); // рисует поле и прочую фигню
void DrawApple(); // рисует яблоко
void SnakeMain(); // управление змейкой
void MoveSnake(); // передвижение змейки
void CheckForEvents(); // а не случилось что со змейкой?
void ShowLoseScreen();
//--------------------------------------------------------------------------------------------------------------------------
int main()
{
    setlocale(LC_ALL, "rus");
    DrawInfo();
    DrawApple();
    SnakeMain();
    return 0;
}
//--------------------------------------------------------------------------------------------------------------------------
void SetAndDraw(int x, int y, char symbol[100], int color)
{
    int temp = 0;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD position = {x, y};
    SetConsoleCursorPosition(hConsole, position);
    if(color != WHITE)
    {
        SetConsoleTextAttribute(hConsole, color);
        temp = 1;
    }
    if(symbol != "_")
        cout << symbol;
    if(temp)
        SetConsoleTextAttribute(hConsole, WHITE);
}
void DrawInfo()
{
    SetAndDraw(32, 0, "Змейка v1.1", YELLOW);
    SetAndDraw(25, 1, "Тихонов Владимир, (c) 2009", YELLOW);
    // рисуем границы
    for(int i = 0; i<80; i++) // верх
        SetAndDraw(i, 3, "#", RED);
    for(int i = 4; i<22; i++) // левая сторона
        SetAndDraw(0, i, "#", RED);
    for(int i = 1; i<80; i++) // низ
        SetAndDraw(i, 21, "#", RED);
    for(int i = 21; i>3; i--) // правая сторона
        SetAndDraw(79, i, "#", RED);
    SetAndDraw(0, 23,"   Управление: ", BLUE);
    cout.put(24);
    SetAndDraw(17, 23, " - вверх, ", BLUE);
    cout.put(25);
    SetAndDraw(28, 23, " - вниз, ", BLUE);
    cout.put(27);
    SetAndDraw(38, 23, " - влево, ", BLUE);
    cout.put(26);
    SetAndDraw(49, 23, " - вправо, ", BLUE);
    SetAndDraw(60, 23, "пробел");
    SetAndDraw(66, 23, " - пауза.", BLUE);
}
void DrawApple()
{
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, YELLOW);
    srand(time(0));
    AppleCord.X = rand() % 78 + 1;
    AppleCord.Y = rand() % 16 + 4;
    SetAndDraw(AppleCord.X, AppleCord.Y);
    cout.put(4);
    SetConsoleTextAttribute(hConsole, WHITE);
}
void SnakeMain()
{
    int choose, speed;
    SetAndDraw(5, 18, "ooooo", GREEN);
    cout.put(1);
    for(int i = 0, k = 10; i <= SnakeLength; i++, k--) // задаём начальные координаты
    {
        coord[i].X = k;
        coord[i].Y = 18;
    }
    while(true)
    {
        if(direction == 1 || direction == 2)
            speed = VERTICAL_SPEED;
        else
            speed = HORISONTAL_SPEED;
        while(!_kbhit()) // пока  ничего не нажато
        {
            MoveSnake();
            Sleep(speed);
        }
        choose = _getch();
        switch(choose)
        {
            case 72: // нажата клавиша вверх
                if(direction != 2)
                    direction = 1;
                break;
            case 80: // нажата клавиша вниз
                if(direction != 1)
                    direction = 2;
                break;
            case 75: // нажата клавиша влево
                if(direction != 4)
                    direction = 3;
                break;
            case 77: // нажата клавиша вправо
                if(direction != 3)
                    direction = 4;
                break;
            case 32: // нажат пробел
                _getch();
        }
    }
}
void MoveSnake()
{
    COORD temp, temp1;
    for(int i = 0; i <= SnakeLength; i++) // новые координаты
    {
        if(i == 0) // для головы в зависимости от направления
        {
            temp = coord[i];
            if(direction == 1)
                coord[i].Y--;
            if(direction == 2)
                coord[i].Y++;
            if(direction == 3)
                coord[i].X--;
            if(direction == 4)
                coord[i].X++;
        }
        else // для туловища просто присваиваем старую координату впередиидущего кружка
        {
            temp1 = temp;
            temp = coord[i];
            coord[i] = temp1;
        }
    }
        SetAndDraw(coord[SnakeLength].X, coord[SnakeLength].Y, " "); // стираем хвост
        SetAndDraw(coord[0].X, coord[0].Y); // рисуем голову
        cout.put(1);
        SetAndDraw(coord[1].X, coord[1].Y, "o", GREEN); // вместо старой головы рисуем кружок
        CheckForEvents();
}
void CheckForEvents()
{
    if(coord[0].X == 0 || coord[0].X == 79 || coord[0].Y == 3 || coord[0].Y == 21) // встретились со стеной
    {
        ShowLoseScreen();
    }
    if((coord[0].X == AppleCord.X) & (coord[0].Y == AppleCord.Y)) // сьели яблоко
    {
        SnakeLength++;
        DrawApple();
    }
    for(int i = 1; i <= SnakeLength; i++) // наткнулись на себя
        if((coord[0].X == coord[i].X) & (coord[0].Y == coord[i].Y))
        {
            ShowLoseScreen();
        }
}
void ShowLoseScreen()
{
    system("cls");
    int i = 3;
    while(i)
    {
        SetAndDraw(33, 11, "Вы проиграли", RED);
        Sleep(600);
        SetAndDraw(33, 11, "            ");
        Sleep(500);
        i--;
    }
    exit(0);
}
0
25.02.2013, 14:20
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.02.2013, 14:20
Помогаю со студенческими работами здесь

Запустить программу в правом нижнем углу, независимо от разрешения экрана?
Здравствуйте! Я знаю, что в свойстве Location формы можно задать координаты левого верхнего угла....

Почему функция MessageBox() выводит сообщение в правом нижнем углу экрана?
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if...

Как позиционировать окно в правом нижнем углу экрана независимо от диагонали?
Как позиционировать окно в правом нижнем углу экрана независимо от диагонали?Установка свойств...

Google Chrome. Как убрать рекламу в нижнем правом углу экрана?
Здравствуйте! Подскажите пожалуйста, как удалить всплывающие окошко в нижнем правом углу экрана?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru