Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 02.11.2016
Сообщений: 19

Дартс на StringGrid

02.12.2016, 20:31. Показов 4247. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать дартс с помощью StringGrida.
Матрицу я сделал, а прицел хочу сделать с помощью 2-х ScrollBar, то есть ScrollBar замкнуты условием на движение по кругу с помощью таймера, при
1-ом щелчке мыши ScrollBar останавливается и включается второй таймер (для второго ScrollBara). Сам прицел выглядит в виде двух линий вертикальной и горизонтальной, их пересечение и есть прицел, я хотел присвоить координаты центра ползунка, на ScrollBar линии.
Помогите сделать эти линии(пробовал Canvas нарисовать, но они
стираются), и присвоить им координаты.

Код программы:

Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Menus, ExtCtrls, ComCtrls;
 
type
  TForm1 = class(TForm)
    sg: TStringGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    SB1: TScrollBar;
    SB2: TScrollBar;
    Timer1: TTimer;
    Timer2: TTimer;
    Label3: TLabel;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
var
n,m,k,max,min:integer;
sg_max,
sg_min:integer;
 
procedure TForm1.Button1Click(Sender: TObject);
Var i,j:Byte;
begin
begin
 N:=StrToInt(Edit1.Text);
 M:=StrToInt(Edit2.Text);
 
 sg.DefaultColWidth:=24;
 sg.RowCount:=N+1;
 sg.ColCount:=M+1;
 sg.Height:=(sg.DefaultRowHeight+2)*(N+1);
 sg.Width:= (sg.DefaultColWidth +2)*(M+1);
 sg.Visible:=True;
 For I:=1 to N do
  sg.Cells[0,I]:=IntToStr(I);
 For J:=1  to M do
  sg.Cells[J,0]:=IntToStr(j);
  begin
    sb1.Width:=(sg.Width-30);
    sb2.Height:=(sg.Height);
  end;
    end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
Var i,J,a:Byte;
begin
randomize;
For I:=1 to n do
 For J:=1 to m do
sg.Cells[i,j]:=IntToStr(random(2))
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
end;
 
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Timer1.Enabled=true then
 begin
 Timer1.Enabled:=false;
 Timer2.Enabled:=true;
end
 else
 Timer2.Enabled:=false;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
max:=100;
sb1.Position:=sb1.Position+2;
if sb1.Position=max then
sb1.Position:=0;
Label3.Caption:=IntToStr(sb1.Position);
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
 
begin
max:=100;
sb2.Position:=sb2.Position+2;
if sb2.Position=max then
sb2.Position:=0;
end;
end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.12.2016, 20:31
Ответы с готовыми решениями:

Дартс
Стандартная мишень для игры в дартс разделена на 20 ячеек с номерами от 1 до 20. В центре расположено «яблочко», попадание в которое...

Подсчет очков в дартс на C++
Всё остальное сделал , осталось только подсчет очков , посоветуйте как сделать подсчет очков?

Моделирование игры в дартс VB 6.0
Нужно создать игру дартс для двух игроков Круговая мишень как в дартс, за один бросок можно набрать от 0 до 50 очков. игроки по очереди...

30
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
05.12.2016, 18:15
Студворк — интернет-сервис помощи студентам
мне тоже больше по описанию кран напомнило
да и интереснее имхо кран будет, чем дартс )))
0
0 / 0 / 0
Регистрация: 02.11.2016
Сообщений: 19
05.12.2016, 20:07  [ТС]
да не суть как это назвать, нужно сделать так, чтобы на пересечении двух scrollbar-ов открывалась ячейка, в этом весь вопрос, как это сделать
0
0 / 0 / 0
Регистрация: 02.11.2016
Сообщений: 19
05.12.2016, 20:40  [ТС]
вот такие ошибки выбивает при вводе функции
0
0 / 0 / 0
Регистрация: 02.11.2016
Сообщений: 19
05.12.2016, 20:47  [ТС]
Не тот скрин, вот ошибка:
Миниатюры
Дартс на StringGrid  
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
05.12.2016, 22:14
ну. она пишет "функция percentToPoint заявлена в описании класса, но не написана в реализации".
в моем тексте ф-я percentTpPoint описана в строках 79-87
0
 Аватар для Teodor7
53 / 53 / 5
Регистрация: 22.11.2016
Сообщений: 268
05.12.2016, 22:43
Цитата Сообщение от krapotkin Посмотреть сообщение
интереснее имхо кран будет, чем дартс )))
Если там будут насыпаны плюшевые бурундуки
0
0 / 0 / 0
Регистрация: 02.11.2016
Сообщений: 19
07.12.2016, 17:51  [ТС]
В общем сделал через канвас, с помощью вашего кода, осталось сделать чтобы при попадании в разные круги, начислялось разное кол-во баллов и рандомно выводился 1 из 10 вопросов с вариантом ответа(типа теста), как лучше это сделать через MessageDlg или как?
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
07.12.2016, 18:07
лучше приложить проект, будет понятнее, как лучше сделать в вашем случае
0
0 / 0 / 0
Регистрация: 02.11.2016
Сообщений: 19
07.12.2016, 18:37  [ТС]
ПОле сделал квадратным, так как, если бы оно было круглым, то пришлось бы писать код для промаха или ограничивать мишень по координатам.
Вложения
Тип файла: rar Дартс.rar (321.8 Кб, 8 просмотров)
0
07.12.2016, 18:48

Не по теме:

Цитата Сообщение от Mobilis Посмотреть сообщение
пришлось бы писать код для промаха или ограничивать мишень по координатам.
код решил не писать так как если писать, то пришлось бы учить язык

0
0 / 0 / 0
Регистрация: 02.11.2016
Сообщений: 19
07.12.2016, 19:01  [ТС]
нет, у меня просто нет времени, если успею привести в нормальный вид до защиты, то может быть и сделаю круглой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2016, 19:01

Дартс 501 расчет и вывод последовательностей выигрыша
Всем привет, сегодня порадовали такой задачей: Напишите программу, которая рассчитывает и отображает все возможные последовательности...

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...

Дартс в haskell? Какой ужас.понятия не имею, как и с чем это есть
А как делать это???=-O Дартс поделен на 20 секций. За каждый бросок начисляется такое количество баллов, как написано на краях...

Как рассчитать очки по заданным координатам в игре "Дартс"
Здравствуйте, имеется картинка. Я кликую по ней и получаю координаты куда попал. Картинка 500x500. Подскажите как рассчитывать по...

Простенькая игра "Дартс"
(*) Реализовать проект -игру "Дартс". На форме размером 500х400 пикселей расположена мишень с центром в клиентской области формы (позиция...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru