2fast4uv02.lua

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 2fast4uv02.lua as PDF for free.

More details

  • Words: 384
  • Pages: 3
-- blobby-volley-spiel-konstanten: field_width ball_radius ground_plane blobby_height blobby_maxjump netz_height netz_radius gravity toleranz horizontalen

= = = = = = = = =

800 31.5 100 89 393.625 323 7 0.28 4.5

-- toleranzwert, f�r die bewegung des blobbys in der

-- eigene konstanten (k�nnen ge�ndert werden): standard_pos min_angriff max_angriff

= 200 = 35 = 55

-- variablen (bitte nicht �ndern) myserve = 999 angriffsversetzung = 999 oldposx = 999

-- versetzung zum ball bei der angabe -- versetzung zum ball beim springen -- alte x-koodinate, wichtig bei sprung

-- spiel-funktionen: function onopponentserve() move(standard_pos) gehen! end function onserve(ballready) if (myserve == 999) then myserve = math.random(150,180) wurde: end move(myserve)

-- bei gegnerischer angabe: -- zur standardposition

-- wenn noch keine versetzung -- f�r die angabe bestimmt

-- zur position bewegen

if ballready and math.abs(posx()-myserve) < toleranz then jump() -- angabe ausf�hren myserve = 999 -- variable zur�cksetzen end end function ongame() if bspeedx()>0 then if angriffsversetzung>40 then angriffsversetzung = 40 end end -- verschiedene f�lle, in denen ein sprung m�glich/vorteilhaft ist: if math.abs(ballx()-posx()) < 4*ball_radius and bally() < 650 and bally() > netz_height and bspeedy()<2

and math.abs(bspeedx())<7 then jump() move(ballx() - angriffsversetzung) elseif posx() > 325 and ballx() > 325 von sog. netzrollern and math.abs(ballx() - posx()) < bspeedx()*5 and bally() < 400 and bally() > 280 then

-- dient zur rettung

jump() move(ballx()) elseif posy() < bally()-ball_radius -- angreifen, wenn der ball nicht von der wand abspringt and estimatey(posx()) > 350 and estimatey(posx()) < 450 and estimatex(ground_plane + blobby_maxjump) < 400 and ballx()-posx() < bspeedx()^2.5 then if oldposx == 999 then oldposx = posx() end jump() move(oldposx-angriffsversetzung) else geplanten einschlagspunkt laufen:

-- ansonsten zum

angriffsversetzung = math.random(min_angriff, max_angriff) oldposx = 999 myestimatex = estimatex(blobby_height + ground_plane + ball_radius)

end

if ballx() < 500 then move(myestimatex) else move(standard_pos) end

end function estimatex(ony) if (bspeedy() == 0) and (bspeedx() == 0) then return ballx() end time =(-bspeedy()-math.sqrt((bspeedy()^2)-(-2*gravity *(bally()-ony))))/(gravity) estimatedx = (bspeedx() * time) + ballx() if(estimatedx > 393-ball_radius) then estimatedx = 400 end if(estimatedx < ball_radius) then

estimatedx = 2 * ball_radius - estimatedx end end

return estimatedx

function estimatey(onx) if (bspeedx() == 0) then time = 0 else time=(onx-ballx())/bspeedx() end y=1/2*(-gravity)*time^2 + bspeedy()*time + bally() return y end function move(tox) if math.abs(posx()-tox) >= toleranz then if posx()-tox > 0 then left() else right() end end end