Avatar billede dexterweb Nybegynder
18. januar 2005 - 21:32 Der er 8 kommentarer

Lave et tidligere program om til et Windows program

Hej eksperter..
Jeg har for rigtig mange år siden lavet et program til at tegne grafer for brownske bevægelser (random walk). Princippet går ud på at man indtaster antal skrit en partikel skal gå og så kommer der en graf ud af det... Et eks. på det er her: http://www.toender-gym.dk/mbs/fysik/ntnujava/gas2D/gas2D.html her kan man se at man følger et molekyle og hvis trykker på trace tegner den en graf.. Jeg har lavet programmet tidligere i pascal, men skal bruge det i windows udgave nu ikke dos.. Men kan ikke finde ud af at lave det om. Håber nogle vil hjælpe mig
På forhånd tak
Avatar billede bleze Nybegynder
18. januar 2005 - 22:59 #1
du må nok komme med noget mere konkret...

prøv at kigge på klassen TCanvas, der kan du tegne selv...
Avatar billede tolderlund Nybegynder
19. januar 2005 - 13:06 #2
Det burde ikke være så svært.
Det eneste (næste) der skal laves om er det visuelle og grafiske.
Måden du beregner tingene på burde kunne virke stort set uændret.
Start med en ny applikation og indlæg dine klasser eller procedurer til at beregne bevægelserne og få det til at kompilere og fungere først.
Så for at vise det på skærmen tegner du tingene på en intern bitmap.
Hver gang du har tegnet en ny bitmap viser du den f.eks. i en TPaintBox eller TImage eller direkte på formens canvas.
Mere skulle der vel ikke være i det.
Avatar billede dexterweb Nybegynder
19. januar 2005 - 17:12 #3
Nu har jeg kigget på det men kan simpelthen ikke få de class's til at du.
Jeg har lagt programmet op www.dexterweb.dk/program.rar
Så håber en kan hjælpe mig, for det er ret vigtigt
Avatar billede bleze Nybegynder
19. januar 2005 - 21:49 #4
Ser simpelt nok ud, har desværre ikke tid til at se på det for 200 point. Sorry.

Det meste af din kode kan du bruge stort set uændret.  Det kode der plotter pixel skal udskiftes med noget der plotter på TCanvas.

Input af div ting kan ske via TEdit felter på en form...

Held og lykke
Avatar billede dexterweb Nybegynder
19. januar 2005 - 23:19 #5
Ja altså nu kan jeg ikke give mere end 200 så hvad vil du have jeg skal gøre er frisk på alt :P Lige nu har jeg problemet med hvad Putpixels skal laves om til
Avatar billede bleze Nybegynder
20. januar 2005 - 10:22 #6
I Delphi kan du trykke F1 for hjælp. Under TCanvas kan du se alle de methoder der er tilgængeligt...

procedure DrawPoint(X, Y: Integer);
procedure DrawPoint(const Point: TPoint);


Jeg tager 400 kr i timen hvis du er frisk på alt. Beregn et par timer... ;)
Avatar billede geek Nybegynder
22. januar 2005 - 06:25 #7
Her er en bette simpel "random walk" kodestump.
Placer en knap på din form og kopier denne kode ind for knappen

procedure TForm1.Button1Click(Sender: TObject);
var
  i,x,y : integer;
begin
  x := 0;
  y := 0;
  for i := 0 to 1000 do    //1000 = skridt
  begin
    inc(x,round((random(2)-0.5)*2));    //x := x +1 eller -1
    inc(y,round((random(2)-0.5)*2));    //x := x +1 eller -1
    form1.Canvas.Pixels[x+300,y+300] := clBlack;
    //form1.Canvas.Ellipse(x+298, y+298, x+302, y+302);
  end;
end.

Tænkte det måske kunne hjælpe dig lidt på vej...

Ge3k
Avatar billede hreiff Nybegynder
24. januar 2005 - 12:27 #8
Her er lidt at starte på. Der er ingen kontrol på antal, og det giver kun første del af programmet, nemlig kun grafisk visning af slutpunkterne.

Lav en form, og sæt 3 editbox'e på (til Partikler, skridt og dimensioner - evt. også nogle labels, så mankan se hvad der er hvad)
Sæt en knap og en image på. Dit Image skal være stort nok
Dobbeltklik på formen, så får du automatisk:

procedure TForm1.FormCreate(Sender: TObject);
begin
end;

og derefter dobbeltklik på knappen, hvilket giver:

procedure TForm1.Button1Click(Sender: TObject);
begin
end;


Ret til følgende:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  x2m,y2m: integer;
  partikler,skridt,dimensioner: integer;
  walk,x,y: integer;
  i,j: integer;
begin
  partikler:=strtoint(edit1.text);
  skridt:=strtoint(edit2.text);
  dimensioner:=strtoint(edit3.text);

  x:=0; y:=0;
  FOR j:=1 TO partikler DO
  BEGIN
    FOR i:=1 to skridt DO
    BEGIN
      IF dimensioner=1 THEN
      BEGIN
        walk:=random(2);
        IF walk=1 THEN
          Inc(x)
        ELSE Dec(x);
      END
      ELSE
      BEGIN
        walk:=Random(2);
        IF walk=1 THEN
          Inc(x)
        ELSE Dec(x);
          walk:=Random(2);
        IF walk=1 THEN
          Inc(y)
        ELSE Dec(y);
      END;
    END;
    image1.canvas.Pixels[x+100,y+100]:= clBlue;
  END;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester