Форумы-->Форум для внеигровых тем-->
Автор | Динамический стек. |
Уважаемые программисты, помогите пожалуйста защитить курсовую работу. Нужно рассказать в какой строчке запускается программа программа, где происходит создание и координаты окна, где происходит добавление графического элемента, где строчка что каждый последующий элемент имеет случайные формы, размер, цвет. Где происходит удаление графического элемента, где строчка которая отвечает за то что именно последний элемент будет удален. Как то так, листинг кода могу в личку скинуть, или лучше сюда? Не протеворечит ли это правилам?) | сюда кидай | ппц курсовая, а кто поможет мне.
Сделать/посчитать и начертить? | using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace metal
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public const int MAX_SIZE = 100;
dStack stack = new dStack(true);
grFigure tmp = null;
private void Form1_Paint(object sender, PaintEventArgs e)
{
int x, y, i = 0, j = 0;
dStack curr;
if (tmp != null)
{
label1.Visible = true;
tmp.draw(680 + (100 - tmp.fA) / 2, 120, e);
}
else
{
label1.Visible = false;
}
curr = stack;
while(curr.value != null)
{
x = i * MAX_SIZE + (MAX_SIZE - curr.value.fA) / 2;
y = j * MAX_SIZE + (MAX_SIZE - curr.value.fA) / 2;
curr.value.draw(x, y, e);
if (curr.next == null)
{
e.Graphics.DrawString("sp", Form1.DefaultFont,
Brushes.Red, x, (j + 1) * MAX_SIZE - 5);
break;
}
else
{
curr = curr.next;
}
i++;
if (i == 4) { i = 0; j++; }
}
}
class grFigure
{
public int fA;
public int ftype;
public Color fclr;
private Random rnd = new Random();
public grFigure()
{
fA = rnd.Next(20, MAX_SIZE);
ftype = rnd.Next(0, 3);
fclr = getColor(rnd.Next(0, 6));
}
public void draw(int x, int y, PaintEventArgs e)
{
switch (ftype)
{
case 0:
e.Graphics.DrawEllipse(new Pen(fclr, 3), x, y, fA, fA);
break;
case 1:
e.Graphics.DrawRectangle(new Pen(fclr, 3), x, y, fA, fA);
break;
case 2:
e.Graphics.DrawLine(new Pen(fclr, 3),
new Point(x + fA / 2, y),
new Point(x, y + fA));
e.Graphics.DrawLine(new Pen(fclr, 3),
new Point(x + fA / 2, y),
new Point(x + fA, y + fA));
e.Graphics.DrawLine(new Pen(fclr, 3),
new Point(x, y + fA),
new Point(x + fA, y + fA));
break;
}
}
private Color getColor(int n)
{
Color tmp = new Color();
switch (n)
{
case 0: tmp = Color.Red; break;
case 1: tmp = Color.Blue; break;
case 2: tmp = Color.Green; break;
case 3: tmp = Color.Yellow; break;
case 4: tmp = Color.Orange; break;
case 5: tmp = Color.Pink; break;
case 6: tmp = Color.Cyan; break;
}
return tmp;
}
}
class dStack
{
public grFigure value;
public dStack next;
private bool _main;
public dStack(bool isMain)
{
value = null;
next = null;
_main = isMain;
}
public bo | public bool Insert(grFigure val)
{
if (value == null) { value = val; return true; }
if(next == null) next = new dStack(false);
return next.Insert(val);
}
private void Clear()
{
if (next != null) { if (next.value == null) next = null; else next.Clear(); }
}
public grFigure Delete()
{
grFigure t = null;
Clear();
if (next != null) return next.Delete();
if (value != null) { t = value; value = null; return t; }
return null;
}
}
private void button1_Click(object sender, EventArgs e)
{
stack.Insert(new grFigure());
this.Invalidate(); // перерисовка окна
}
private void button2_Click(object sender, EventArgs e)
{
grFigure t;
t = stack.Delete();
if (t != null) tmp = t;
this.Invalidate();
}
}
} | Где происходит удаление графического элементаnext.Delete(); в методе Delete() |
Где происходит удаление графического элементаnext.Delete(); в методе Delete()
спасибо, будут еще ответы?) | когда весь код будет, будут и ответы | stack.Insert(new grFigure()); добавление графического элемента | fA = rnd.Next(20, MAX_SIZE);
ftype = rnd.Next(0, 3);
fclr = getColor(rnd.Next(0, 6)); элемент имеет случайные формы, размер, цвет | условие (next != null) в строчке if (next != null) return next.Delete(); нужно чтобыименно последний элемент будет удален первым | "удаление" похоже все-таки в этой строчкеif (value != null) { t = value; value = null; return t; }, а именно value = null; . Я бы сказал "обнуление". А удаление объекта я так понимаю вот тут происходит: stack.Delete(); | где происходит создание и координаты окна сего в представленном коде не наблюдаю, та что см пост 8 | ps сам ни строчки на богопротивной C# в жизни не написал, так что вполне возможно кто-то что-то подправит. За сим откланиваюсь. | для MrSlayer:
спасибо большое |
К списку тем
|