%% Takes 1D objects' initial and movements at certain times, and checks that they don't intersect. %% behaviours: stay up unless moved (m) down, can push (p) other blocks down, stays (s) there, (these determine its function of space with relation to time) %% needs data structs of object speed %% check whether each pixel overlaps each other block at each point in time %% e.g. vertical 1d space in which person (p) presses lion's (l) hind quarters down to the stand (s). %% blockworld1([[p,5,p,[-1]],[l,4,m,[p]],[s,1,s,[]]],1,5,3,Frames). %% Frames = [[s,n,n,l,p],[s,n,l,p,n],[s,l,p,n,n]] blockworld1(Blocks,LowerBound,UpperBound,FramesNumber,Frames) :- blockworld2(Blocks,LowerBound,UpperBound,1,FramesNumber2,Frames1,Frames2). blockworld(_,UpperBound,UpperBound,FramesNumber,FramesNumber,Frames,Frames). blockworld2(Blocks,LowerBound,UpperBound,FramesNumber1,FramesNumber2,Frames1,Frames2) :- blockworld3(Blocks,LowerBound,UpperBound,0,FramesNumber1,FramesNumber3,Frames), blockworld2(Blocks,LowerBound,UpperBound,FramesNumber3,FramesNumber1, [BlockName,InitialPosition,BlockType,[BlockTypeArguments] keep copy of blocks at start, incremement lb delete blocks as the space is described change block's position for each frame