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:
| program gravity_particle; uses crt,dos,graph;
const x_max = 639; y_max = 479;
var grafiktreiber, grafikmode : Integer; Color : Byte; m, n, x_pos, y_pos : integer; x1,x2,xred,xmove : 0..639; y1,y2,yred,ymove : 0..479; zahl,hilf,radius : word; vector,xv,yv : real; zw_sum : real; schalter : boolean;
procedure p_xmove; begin xv:=xred-xmove; yv:=yred-ymove; if yv=0 then yv:=1; if xv=0 then xv:=1;
if yv>xv then vector:=xv/yv else vector:=yv/xv;
if zw_sum>1 then schalter:=true; if zw_sum<1 then schalter:=false; if zw_sum=1 then schalter:=true;
case schalter of true : begin if xmove>xred then xmove:=xmove-1 else xmove:=xmove+1; zw_sum:=zw_sum-abs(vector); end; false: begin if ymove>yred then ymove:=ymove-1 else ymove:=ymove+1; zw_sum:=zw_sum+abs(vector); end; end; end;
begin
grafiktreiber := detect; InitGraph(grafiktreiber, grafikmode, 'e:\turbo7.0\BP\BGI'); if GraphResult <> grOk then Halt(1); x1:=0; x2:=0; xred:=400; yred:=200; y1:=0; y2:=0; color:=0; zahl:=0; hilf:=5; radius:=300; setbkcolor(4);
zw_sum:=1.5;
for hilf:=0 to 1 do begin putpixel(xred,yred,4); putpixel(xred+hilf,yred+hilf,4); putpixel(xred,yred+hilf,4); putpixel(xred+hilf,yred,4); end; xmove:=50;ymove:=400;
repeat p_xmove; putpixel(xmove,ymove,14); delay(10); until (keypressed); readln; CloseGraph; end. |