0 / 0 / 0
Регистрация: 21.11.2019
Сообщений: 11
1

!ИГРА! метеориты

10.02.2020, 18:07. Показов 294. Ответов 1
Метки нет (Все метки)

Нужна помощь. Облазил интернет но так и не смог получить нужную информацию.
Нужно чтобы к данному объекту сделанному в программе приближались фигуры (квадраты)и появлялись они рандомно.
Pascal
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
uses Crt;
{$V-}
const ESC=#27; ENTER=#13;
      F1=#59;  F10=#68;
      TAB=#9;  SPACE=#32;
      UP=#72;  DOWN=#80;
      LEFT=#75; RIGHT=#77;
      HOME=#71; END_=#79;
      PAGE_UP=#73; PAGE_DN=#81;
var Ch:char;
 
procedure Draw (x,y:integer;mode:boolean);
var sprite:array [1..3] of string [3];
    i:integer;
begin
 sprite[1]:='/|\';
 sprite[2]:='-=-';
 sprite[3]:='\|/';
 if mode then textcolor (White)
 else textcolor (Black);
 for i:=y to y+2 do begin
  gotoxy (x,i);
  write (sprite[i-y+1]);
 end;
 gotoxy (x+1,y+1);
end;
 
procedure Status (n:integer; s:string);
begin
 textcolor (Black); textbackground (White);
 gotoxy (1,n); write (' ':79);
 gotoxy (2,n); write (s);
 textcolor (White); textbackground (Black);
end;
 
var x,y:integer;
 
begin
 TextMode (CO80);
 Status (1,'Пример программы управлен­ия движе­нием!');
 Status (25,'Стрелки - управлен­ие; Esc - выход');
 x:=10; y:=10;
 repeat
  Draw (x,y,true);
  Ch:=UpCase(ReadKey);
  case Ch of
   #0: begin
    Ch:=ReadKey;
    Draw (x,y,false);
    case Ch of
     LEFT:  if x>1 then x:=x-1;
     RIGHT: if x<77 then x:=x+1;
     UP:    if y>2 then y:=y-1;
     DOWN:  if y<22 then y:=y+1;
    end;
   end;
  end;
 until Ch=ESC;
 ClrScr;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2020, 18:07
Ответы с готовыми решениями:

Игра в «Одиннадцать предметов», игра Баше.
прошу помощи в создании программы! Разработать программную модель следующей игры двух...

Метеориты в консольной игре
Например я хочу в своей первой консольной игре добавить пули или астероиды, чтобы они появлялись в...

Задача "Метеориты"
Здравствуйте! Всех с праздниками! Помогите решить задачу! Ход решения мне ясен, интересует код....

Бюджет 4500 гр. Конфигурация работа в Office, AutoCAD, игра Assassin, онлайн игра World of Tanks
Собираю компьютер для сестры. Основные требования: работа в Microsoft Office, AutoCAD, игра...

1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5773 / 3473 / 2454
Регистрация: 22.11.2013
Сообщений: 9,776
Записей в блоге: 1
10.02.2020, 20:15 2
Прежде всего, нужно немного поменять цикл обработки нажатий клавиш. ReadKey блокирует выполнение программы до нажатия клавиши, а у вас должно что-то происходить даже когда клавиша не нажата. Поможет функция KeyPressed. Заодно стоит чуть поменять отрисовку -- нет смысла перерисовывать объект, если координаты не изменились
Pascal
  repeat
    Delay(100);
    {
      обрабатываем движение прочих объектов
    }
    if KeyPressed then begin
      Ch:=UpCase(ReadKey);
      case Ch of
        #0:
          begin
            Ch:=ReadKey;
            case Ch of
              LEFT:  if x>1  then begin Draw(x,y,False); Dec(x); Draw(x,y,True); end;
              RIGHT: if x<77 then begin Draw(x,y,False); Inc(x); Draw(x,y,True); end;
              UP:    if y>2  then begin Draw(x,y,False); Dec(y); Draw(x,y,True); end;
              DOWN:  if y<22 then begin Draw(x,y,False); Inc(y); Draw(x,y,True); end;
            end;
          end;
      end;
    end;
  until Ch=ESC;
В таком варианте просится обертка вроде:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var x, y: Integer;
procedure DrawRel(dx, dy: Integer);
begin
  Draw(x,y,False);
  Inc(x,dx); Inc(y,dy);
  Draw(x,y,True);
end;
...
            case Ch of
              LEFT:  if x>1  then DrawRel(-1,0);
              RIGHT: if x<77 then DrawRel( 1,0);
              UP:    if y>2  then DrawRel(0,-1);
              DOWN:  if y<22 then DrawRel(0, 1);
            end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2020, 20:15

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

Игра в загадки. Загадать загадку. Если ответ верен – поздравить пользователя. Затем сообщить, что игра окончена.
Всем привет! Меня зовут VitoScaletta, совсем недавно начал обучаться JS, но очень тяжело в голову...

Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново?
Как сделать так, чтобы при нажатии на кнопку &quot;Новая игра&quot; игра начиналась заново? unit1.cpp void...

Игра слов, игра Scrabble
Задание: Создать программу для решения задачи построения слова из некоторого множества букв (игра...

Игра Кости, игра с компьютером
Всем привет! Делаю консольную игру Кости. Условия такие: 1) Перед игрой все игроки бросают...


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

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

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