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

Арканоид

28.02.2011, 20:11. Показов 7179. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день(вечер) ищу исходник арканоида(любого) на делфи 2007.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2011, 20:11
Ответы с готовыми решениями:

арканоид
помогите пожалуйста, создать простой арканоид, в котором просто нада палочкой, снизу ездящей бить...

арканоид
помогите пожалуйста, создать простой арканоид, в котором просто нада палочкой, снизу ездящей бить...

Арканоид
Здравствуйте. Завтра экзамен и мне срочно нужно написать игру "АРКАНОИД"...Прошу помочь. Подсмотрел...

Алгоритм отбивания (арканоид)
Делал арканоид, но доску сделал не прямоугольную а как часть...

4
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
01.03.2011, 14:43 2
Лучший ответ Сообщение было отмечено helloworld2011 как решение

Решение

недавно делал, код не сохранился правда. Будет время небросаю еще раз

Добавлено через 3 часа 34 минуты
вот набросал, пользуйся ))
можешь доработать по своему вкусу
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
119
120
121
122
123
124
125
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Label1: TLabel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  kubik:array[0..5,0..14] of TShape;
  x,y:integer;
  start:boolean;
implementation
 
uses Math;
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var i,j, x,y:integer;
begin
Randomize;
x:=0; y:=0;
for i:=0 to high(kubik) do begin
 for j:=0 to high(kubik[i]) do  begin
  kubik[i,j]:=TShape.Create(self);
  kubik[i,j].Parent:=form1;
  kubik[i,j].Top:=y;
  kubik[i,j].Left:=x;
  kubik[i,j].Height:=10; kubik[i,j].Width:=40;
   inc(x,41);
 end;
inc(y,11); x:=0;
end;
Width:=41*15;
 
Shape1.Top:=ClientHeight-Shape1.Height-5;
Shape2.Top:=Shape1.Top-Shape2.Height;
Shape2.Left:=Shape1.Left+(Shape1.Width div 2)-(Shape2.Width div 2);
end;
 
procedure TForm1.FormResize(Sender: TObject);
begin
Shape1.Top:=ClientHeight-Shape1.Height-5;
end;
 
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if (start) then begin
Shape2.Top:=Shape1.Top-Shape2.Height;
Shape2.Left:=Shape1.Left+(Shape1.Width div 2)-(Shape2.Width div 2);
end;
 
if x<Width div 2 then
if x>(Shape1.Width div 2)+5 then
Shape1.Left:=x-Shape1.Width div 2 else Shape1.Left:=2;
 
if x>Width div 2 then
if x<ClientWidth-(Shape1.Width div 2)-2 then
Shape1.Left:=x-Shape1.Width div 2 else  Shape1.Left:=ClientWidth-Shape1.Width-2;
 
end;
 
procedure TForm1.FormClick(Sender: TObject);
begin
Timer1.Enabled:=true;
start:=false;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var rec:Trect; i,j:integer;
begin
 Shape2.Top:=Shape2.Top-y;
 Shape2.Left:=Shape2.left-x;
 
if (Shape2.Top<=0)or(Shape2.Top+Shape2.Height>=ClientHeight-2) then
y:=-y;
 
if (Shape2.Left<=0)or(Shape2.Left+Shape2.Width>=ClientWidth-2) then
x:=-x;
 
if intersectrect(rec,Shape2.BoundsRect,Shape1.BoundsRect) then begin
y:=-y; x:=-x;
x:=RandomRange(-5,5);
end;
 
for i:=0 to high(kubik) do begin
 for j:=0 to high(kubik[i]) do  begin
   if (kubik[i,j].Tag<>1)and(intersectrect(rec,Shape2.BoundsRect,kubik[i,j].BoundsRect))and ((Shape2.Top<=kubik[i,j].top+11)and((Shape2.Left>kubik[i,j].left-1)and(Shape2.Left<kubik[i,j].left+kubik[i,j].left+41))) then begin   //((Shape2.Top<=kubik[i,j].top+11)and((Shape2.Left-Shape2.Width div 2>kubik[i,j].left-1)and(Shape2.Left-Shape2.Width div 2<kubik[i,j].left+kubik[i,j].left+41)))
          kubik[i,j].Tag:=1;
          kubik[i,j].Destroy;
 
      y:=-y; x:=-x;
      x:=RandomRange(-5,5);
   end;
 end;
 
end;
 
end;
 
initialization
start:=true;
y:=4;
end.
4
0 / 0 / 0
Регистрация: 25.11.2019
Сообщений: 11
02.12.2019, 17:07 3
anonimus, Можешь скинуть сам исходник и исполняемый файл)?
0
3017 / 1642 / 649
Регистрация: 19.03.2019
Сообщений: 5,318
03.12.2019, 09:46 4
Цитата Сообщение от _daunGigant_ Посмотреть сообщение
anonimus, Можешь скинуть сам исходник и исполняемый файл)?
anonimus тут с мая не появлялся.
0
3017 / 1642 / 649
Регистрация: 19.03.2019
Сообщений: 5,318
03.12.2019, 10:29 5
Цитата Сообщение от _daunGigant_ Посмотреть сообщение
Можешь скинуть сам исходник и исполняемый файл)?
я вместо него собрал тебе исходники в проект и скомпилировал.
добавил, чтобы были кубики разного уровня - с разным количеством попаданий, сколько нужно, чтобы разбить.

алгоритм отбивания мячика здесь кривой, на мой взгляд. угол не зависит от того, какой стороной ракетки отбил, а зависит от случайного числа. И ещё глюк - когда мячик попадает к правой границе окна, он входит в клинч (поиграешь, увидишь).
Нет вывода результатов и окончания игры.
Но это ты всё доработаешь. Ведь anonimus дал тебе шаблон. А дальше дорабатывай сам.


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
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
unit Unit1;
 
{(c) anonimus
  https://www.cyberforum.ru/delphi-beginners/thread250108.html#post1410964 }
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Label1: TLabel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  kubik: array[0..5, 0..14] of TShape;
  x, y: integer;
  start: boolean;
implementation
 
uses Math;
 
{$R *.dfm}
const
  KubikColor : array[0..3] of TColor = (clRed, clWhite, clBlue, clRed);
 
procedure TForm1.FormCreate(Sender: TObject);
var i, j, x, y: integer;
begin
  Timer1.Enabled := false;
  Timer1.Interval := 30;
  Randomize;
  DoubleBuffered := true;
 
  x := 0; y := 0;
  for i := 0 to high(kubik) do begin
    for j := 0 to high(kubik[i]) do begin
      kubik[i, j] := TShape.Create(self);
      kubik[i, j].Parent := form1;
      kubik[i, j].Top := y;
      kubik[i, j].Left := x;
      kubik[i, j].Height := 10; kubik[i, j].Width := 40;
      if (i=high(kubik)) or (Random(10)>6) then
         kubik[i, j].Tag := 2 // сколько нужно попаданий, чтобы уничтожить
      else
         if Random(15)=0 // один из 15 случайно будет иметь уровень защиты 3 
            then kubik[i, j].Tag := 3 // сколько нужно попаданий, чтобы уничтожить
            else kubik[i, j].Tag := 1; // сколько нужно попаданий, чтобы уничтожить
 
      kubik[i, j].Brush.Color := KubikColor[kubik[i, j].Tag];
      inc(x, 41);
    end;
    inc(y, 11); x := 0;
  end;
  Width := 41 * 15;
 
  Shape1.Top := ClientHeight - Shape1.Height - 5;
  Shape2.Top := Shape1.Top - Shape2.Height;
  Shape2.Left := Shape1.Left + (Shape1.Width div 2) - (Shape2.Width div 2);
end;
 
procedure TForm1.FormResize(Sender: TObject);
begin
  Shape1.Top := ClientHeight - Shape1.Height - 5;
end;
 
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (start) then begin
    Shape2.Top := Shape1.Top - Shape2.Height;
    Shape2.Left := Shape1.Left + (Shape1.Width div 2) - (Shape2.Width div 2);
  end;
 
  if x < Width div 2 then
    if x > (Shape1.Width div 2) + 5 then
      Shape1.Left := x - Shape1.Width div 2 else Shape1.Left := 2;
 
  if x > Width div 2 then
    if x < ClientWidth - (Shape1.Width div 2) - 2 then
      Shape1.Left := x - Shape1.Width div 2 else Shape1.Left := ClientWidth - Shape1.Width - 2;
 
end;
 
procedure TForm1.FormClick(Sender: TObject);
begin
  Timer1.Enabled := true;
  start := false;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var rec: Trect; i, j: integer;
begin
  Shape2.Top := Shape2.Top - y;
  Shape2.Left := Shape2.left - x;
 
  if (Shape2.Top <= 0) or (Shape2.Top + Shape2.Height >= ClientHeight - 2) then
    y := -y;
 
  if (Shape2.Left <= 0) or (Shape2.Left + Shape2.Width >= ClientWidth - 2) then
    x := -x;
 
  if intersectrect(rec, Shape2.BoundsRect, Shape1.BoundsRect) then begin
    y := -y; x := -x;
    x := RandomRange(-5, 5);
  end;
 
  for i := 0 to high(kubik) do begin
    for j := 0 to high(kubik[i]) do begin
      if (kubik[i, j].Tag <> 0) and
          (intersectrect(rec, Shape2.BoundsRect, kubik[i, j].BoundsRect)) and
          ((Shape2.Top <= kubik[i, j].top + 11) and
           ((Shape2.Left > kubik[i, j].left - 1) and (Shape2.Left < kubik[i, j].left + kubik[i, j].left + 41)))
           then begin
           //((Shape2.Top<=kubik[i,j].top+11)and((Shape2.Left-Shape2.Width div 2>kubik[i,j].left-1)and(Shape2.Left-Shape2.Width div 2<kubik[i,j].left+kubik[i,j].left+41)))
        kubik[i, j].Tag := kubik[i, j].Tag-1;
        kubik[i, j].Brush.Color := KubikColor[ kubik[i, j].Tag ];
        if kubik[i, j].Tag=0 then kubik[i, j].Destroy;
 
        y := -y; x := -x;
        x := RandomRange(-5, 5);
      end;
    end;
 
  end;
 
end;
 
initialization
  start := true;
  y := 6;
end.
Вложения
Тип файла: 7z arcanoid_project.7z (1.9 Кб, 47 просмотров)
Тип файла: 7z arcanoid.exe.7z (157.8 Кб, 51 просмотров)
1
03.12.2019, 10:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2019, 10:29
Помогаю со студенческими работами здесь

Арканоид,кирпичи разных уровней
Привет, делаю арканоид, пытаюсь сделать кирпичи 2-го уровня т.е кирпич должен уничтожаться только в...

Арканоид. Разрушение кирпичей шариком.
Здравствуйте. Не знаю, как разрешить данную проблему. Бывает, что шарик тупо проходит мимо кирпичей...

Игра Арканоид - как создать кубики на форме
как лучше создать кубики на форме с помощью массива или ставить по отдельности каждые(так мне...

Игра Арканоид
1. Нужен рабочий исходник игры Арканоид. (Внизу платформа отбиваешь шарик а шарик разбивает блоки)...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru