Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 41
1

Играющий выбирает одну из N лошадей

29.03.2016, 21:16. Просмотров 1333. Ответов 6
Метки нет (Все метки)

Играющий выбирает одну из N лошадей, состязающихся в бегах, и выигрывает, если его лошадь приходит первой. Скорость передвижения лошадей на разных этапах выбирается программой с помощью датчика случайных чисел в диапазоне от М1 до М2.
Технические требования: значения N(3<=N<=7), M1(2<=M1<=2) и M2(6<=M2<=10) хранятся в файле Input.txt. Ипподром располагается в центре экрана и показывает движение лошадей. В левой или правой части экрана отображается кол-во сделанных ходов. Управление игрой осуществляется с помощью клавиатуры. Предусмотреть запись кол-ва сделанных ходов и выигранных ставок в файл Output.txt.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2016, 21:16
Ответы с готовыми решениями:

Игрок выбирает одну из трех лошадей, которые соревнуются на скачках, и выигрывает, если его лошадь приходит первой
Здравствуйте! В C++ я новичок, а тут задачу сделать подкинули, подскажите как правильно...

Select выбирает только одну запись вместо столбца
command1.CommandText = @&quot;SELECT Success FROM Plov WHERE Name = @namw AND Surname = @surname AND Age...

Лотерея. Программа выбирает одну цифру, выигрывают те, чей номер заканчивается на ту цифру
нужно написать программу которая позволяет загружать данные о 10 абонентах(Имя и 9-ти значный номер...

Есть таблица с макросом, есть текстовые данные, одну часть правильно выбирает и расставляет в таблицу, вторую не так
Здравствуйте, есть таблица с макросом выбирающим из этого ИВЦ ЖА СПРАВКА 2612. ВТОРНИК 26...

6
Эксперт Pascal/Delphi
2348 / 1269 / 1481
Регистрация: 29.08.2014
Сообщений: 4,580
30.03.2016, 01:30 2
Цитата Сообщение от StarHack Посмотреть сообщение
M1(2<=M1<=2)
т.е. M1 всегда равен 2.

a этапов сколько?
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 41
30.03.2016, 01:48  [ТС] 3
Извиняюсь, опечатка. М1(2<=M1<=5).
Кол-во этапов задает сам пользователь.
0
Эксперт Pascal/Delphi
2348 / 1269 / 1481
Регистрация: 29.08.2014
Сообщений: 4,580
30.03.2016, 12:13 4
как-то так

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
uses GraphAbc;
type 
  horse=record
    speed:integer;
    x:integer;
    y:integer;
    e:boolean;
    tm:System.DateTime;
  end;  
var
  p1,p2,p3:Picture;
  i,n,m1,m2,e,j,e1,ww:integer;
  h:array[1..7] of horse;
  iend:boolean;
procedure InitPicture;  
begin
  p1:=Picture.Create(50,60);
  with p1 do begin
    SetBrushColor(clBlack);
    SetPenColor(clAquamarine);
    FillRect(0,50,10,60);FillRect(40,50,50,60);
    FillRect(10,40,20,50);FillRect(30,0,40,50); 
    FillRect(10,30,40,40);FillRect(40,10,50,20);
  end;
  p2:=Picture.Create(50,60);
  with p2 do begin
    SetBrushColor(clBlack);
    SetPenColor(clAquamarine);
    FillRect(20,50,30,60);  
    FillRect(10,40,20,50);FillRect(30,0,40,50); 
    FillRect(10,30,40,40);FillRect(40,10,50,20);
  end;
  p3:=Picture.Create(50,60);
  p3.Clear;
end;
begin
  randomize;
  writeln('N,M1,M2=');readln(n,m1,m2);ClearWindow;
  writeln('Количество этапов:');readln(e);
  SetWindowHeight(70*n);
  ww:=ScreenWidth-10;
  SetWindowWidth(ww);
  SetWindowPos(0,ScreenHeight div 2- WindowHeight div 2);
  SetWindowCaption('Скачки');
  ClearWindow;
  InitPicture;
  SetPenColor(clGreen);
  SetBrushColor(clWhite);
  for i:=1 to n do  begin
    Line(0,70*i,ww,70*i);
    h[i].speed:=(random(m2-m1+1)+m1)*30;
    h[i].x:=0;
    h[i].y:=70*(i-1)+9;
    h[i].e:=true;
    h[i].tm:=System.DateTime.Now;
  end;  
  e1:=WindowWidth div e;
  for i:=1 to e do Line(e1*i,0,e1*i,WindowHeight);
  j:=-1;
  repeat
    j:=j+1;Sleep(1);
    iend:=true;
    for i:=1 to n do begin
      if h[i].e and (j mod h[i].speed=0) then begin
        LockDrawing;
        p3.Draw(h[i].x,h[i].y);
        h[i].x:=h[i].x+1;
        if odd(h[i].x) then p2.draw(h[i].x,h[i].y) else p1.draw(h[i].x,h[i].y);
        if h[i].x mod e1=0 then begin 
          h[i].speed:=(random(m2-m1+1)+m1)*30;
          TextOut(h[i].x-60,h[i].y,(System.DateTime.Now-h[i].tm).TotalSeconds.ToString);
        end;  
        if h[i].x=ww-60 then begin 
          TextOut(h[i].x,h[i].y,(System.DateTime.Now-h[i].tm).TotalSeconds.ToString);
          h[i].e:=false;
        end;
        UnlockDrawing;
      end;
      if h[i].e then iend:=false; 
    end;  
  until iend;
end.
Добавлено через 2 минуты
Цитата Сообщение от StarHack Посмотреть сообщение
В левой или правой части экрана отображается кол-во сделанных ходов. Управление игрой осуществляется с помощью клавиатуры.
что тут подразумевалось, я не понял - на ипподроме делают ставки и никакого управления игрой нет. и какие ходы надо отображать?
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 41
30.03.2016, 12:58  [ТС] 5
Кол-во сделанных ходов -имеется в виду, сколько игр всего было совершено. Как я понял задание - нужно сделать список с играми, в каждом из которых разное кол-во лошадей и их скорости. Тобишь игрок выбирает строку с игрой, далее делает ставку на 1 из лошадей, а затем ему высвечивается результат.

В самой программе еще нужно бы добавить на какую из лошадей делает ставку игрок.
0
Эксперт Pascal/Delphi
2348 / 1269 / 1481
Регистрация: 29.08.2014
Сообщений: 4,580
30.03.2016, 13:32 6
Лучший ответ Сообщение было отмечено StarHack как решение

Решение

немного украскрасил и добавил места. массив res[номер лошади,номер этапа]=время с начала это протокол можете куда угодно его сохранять.
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
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
uses GraphAbc;
type 
  horse=record
    speed:integer;
    x:integer;
    y:integer;
    e:boolean;
    tm:System.DateTime;
    p1,p2:Picture;
  end;  
var
  c:array[1..7] of Color=(clRed,clGreen,clBlue,clViolet,clBrown,clDarkCyan,clGreenYellow);
  p3:Picture;
  i,n,m1,m2,e,j,e1,ww,t:integer;
  h:array[1..7] of horse;
  iend:boolean;
  res:array[,] of integer;
 
function GetPlace(r,c:integer):string;
var
  i,j:integer;  
begin
  j:=1;
  for i:=1 to n do if (res[i,c]>0) and (res[r,c]>res[i,c]) then j:=j+1;
  case j of 
    1:Result:='I   ';
    2:Result:='II  ';
    3:Result:='III ';
    4:Result:='IV  ';
    5:Result:='V   ';
    6:Result:='VI  ';
    7:Result:='VII ';
  end;
  Result:=Result+': '+res[r,c].ToString;
end;  
  
procedure InitPicture(var p1,p2:Picture;c:Color);  
begin
  p1:=Picture.Create(50,60);
  with p1 do begin
    SetBrushColor(c);
    FillRect(0,50,10,60);FillRect(40,50,50,60);
    FillRect(10,40,20,50);FillRect(30,0,40,50); 
    FillRect(10,30,40,40);FillRect(40,10,50,20);
  end;
  p2:=Picture.Create(50,60);
  with p2 do begin
    SetBrushColor(c);
    FillRect(20,50,30,60);  
    FillRect(10,40,20,50);FillRect(30,0,40,50); 
    FillRect(10,30,40,40);FillRect(40,10,50,20);
  end;
end;
begin
  randomize;
  writeln('N,M1,M2=');readln(n,m1,m2);ClearWindow;
  writeln('Количество этапов:');readln(e);
  SetLength(res,n+1,e+1);
  for i:=1 to n do for j:=1 to e do res[i,j]:=0;
  p3:=Picture.Create(50,60);
  p3.Clear;
  SetWindowHeight(70*n);
  ww:=ScreenWidth-10;
  SetWindowWidth(ww);
  SetWindowPos(0,ScreenHeight div 2- WindowHeight div 2);
  SetWindowCaption('Скачки');
  ClearWindow;
  SetBrushColor(clWhite);
  SetPenColor(clRed);  
  e1:=WindowWidth div e;   
  for i:=1 to e do Line(e1*i,0,e1*i,WindowHeight);
  for i:=1 to n do  begin
    SetPenColor(clBlack);  
    Line(0,70*i,ww,70*i);
    h[i].speed:=(random(m2-m1+1)+m1)*30;
    h[i].x:=0;
    h[i].y:=70*(i-1)+9;
    h[i].e:=true;
    h[i].tm:=System.DateTime.Now;
    InitPicture(h[i].p1,h[i].p2,c[i]);
    SetBrushColor(clwhite);
    FillRect(0,70*i,ww,70*i-60);
  end;  
  j:=-1;
  SetPenColor(clRed);
  SetBrushColor(clGreenYellow);
  repeat
    j:=j+1;Sleep(1);
    iend:=true;
    for i:=1 to n do begin
      if h[i].e and (j mod h[i].speed=0) then begin
        LockDrawing;
        p3.Draw(h[i].x,h[i].y);
        h[i].x:=h[i].x+1;
        if odd(h[i].x) then h[i].p2.draw(h[i].x,h[i].y) else h[i].p1.draw(h[i].x,h[i].y);
        t:=h[i].x div e1;
        if h[i].x mod e1=0 then begin 
          h[i].speed:=(random(m2-m1+1)+m1)*30;
          res[i,t]:=(System.DateTime.Now-h[i].tm).TotalSeconds.Round;          
          TextOut(h[i].x-60,h[i].y,GetPlace(i,t));
        end;  
        if h[i].x=ww-60 then begin 
          res[i,e]:=(System.DateTime.Now-h[i].tm).TotalSeconds.Round;
          TextOut(h[i].x-30,h[i].y,GetPlace(i,e));
          h[i].e:=false;
        end;
        UnlockDrawing;
      end;
      if h[i].e then iend:=false; 
    end;  
  until iend;
  SetWindowCaption('Скачки забег завершен!');
end.
Цитата Сообщение от StarHack Посмотреть сообщение
Кол-во сделанных ходов -имеется в виду, сколько игр всего было совершено. Как я понял задание - нужно сделать список с играми, в каждом из которых разное кол-во лошадей и их скорости. Тобишь игрок выбирает строку с игрой, далее делает ставку на 1 из лошадей, а затем ему высвечивается результат.
- так это совсем другое задание.
1
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 41
30.03.2016, 14:05  [ТС] 7
Большое спасибо за помощь. Дальше тогда сам доделаю.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2016, 14:05

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

бег лошадей по прямой
скажите как сделать чтоб 4 лошади( Image) бежали по прямой и первая которая добежит до финиша...

Ямщик не гони лошадей
На сколько сложно разгонять процессор и память если я профан в этом деле :( Процессор AMD Ryzen...

Компьютер играющий роль сервера
Добрый день. Сеть 5 компов. ОС: Windows 8 Professional ПО: 1С Бухгалтерия 8, 1С Управление...

Домофон играющий любую музыку
Здравствуйте! Меня интересует вопрос создания такого устройства,при помощи которого мой домофон...


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

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

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