diff --git a/docs/samenvatting.md b/docs/samenvatting.md index f9fdd35..acfe6c0 100644 --- a/docs/samenvatting.md +++ b/docs/samenvatting.md @@ -1,6 +1,25 @@ # Worms # -### class +### inleiding + + e-mail groepsindeling (OK) + first part: single class + second part: associations between classes + third part: inheritance and generics + TA voor vragen (ogp-project@cs.kuleuven.be) + Engels! + Git gebruiken (GitHub) + attention: documentation, accurate specifications, re-usability and adaptability + +### Assignment + + 2D wereld + goal: kill worms of other teams and have the last surviving Worms + based on original artillery strategy (1995 by Team17 Digital) + eventuele helper classes: classes marked @Value + All aspects schould be specified formally and informally + +### Properties of Worms name location @@ -11,7 +30,7 @@ ### location - (x,y) coordinaten + (x,y) coordinaten in meter defensief @@ -53,3 +72,102 @@ type niet gezegd -> double (radius, coordinaat) Double.NEGATIVE_INFINITY && Double.POSITIVE_INFINITY toegestaan +### Turning and Moving + +### method move + change location worm (location, orientation, number of steps) + occurs in steps + distance one step = radius worm + given number of steps >= 0 + defensief + +### method turn + change orientation of worm + adding given angle to current orientation + nominaal + resulting angle in specified range for orientation of worm + +### move and turn costs action points + orientation change by 2pi => decrease current action points by 60 + orientation change by 2pi/f => decrease current action point by 60/f + movement: horizontal stap => 1 action points ; vertical => 4 + total cost step: abs(cos theta) + abs(4sin theta) + action point: int (round to next int) + +### Jumping + +### method jump + change location (respect orientation and action points) + defensief + given: remaining action points and mass + force jump: F = (5*APs) + (m*g) (g = 5.0m/s^2) + duration: 0.5s + initial velocity: v0 = (F/m) * 0.5s (formula may change) + velocity: nonnegative and finite + +### method jumpStep + computes in-flight locations (xDeltaT, yDeltaT) of a jumping worm any deltaT + hom compute: page 5 + distance: d = (v0^2 * sin(2 theta))/g + t = d/(v0 * cos theta) (seconds) + +### method jumpTime + returns t above + orientation: pi < theta < 2pi => worm shall not move + jumping: consumes all remaining action points + jumpTime and jumpStep must not change attributes of a worm + +### Opmerkingen + + future: involve further trajectory parameters or geographical features + +### Storing and Manipulating Real Numbers as Floating-Point Numbers + + double: store/return arbitrary real numbers + double: subset of real numbers (Double.POSITIVE_INFINITY to Double.NEGATIVE_INFINITY) + arithmetic operations on double, whose result is double => rounding correct number to obtain a value of type Double + idealised JAVA: double same meaning as in regular math + correct solution: interpreting your code and formal docu. as statements and expressions of idealised JAVA + reasoning: ignore rounding issues + testing program: not ignore => result within acceptable distance from correct result + acceptable: abs(r-e)/abs(e) < 0.01% (r = observed result, e = expected result) + use JUnit's assertEquals(double, double, double) method to test acceptable distance + +### Testing + + write JUnit test suite for move, turn and jump + include test suite in your submission + +### User Interface + + GUI to visualise effects of various operations on worms + included in assignment as JAR file + import JAR into Eclipse as existing project + src-provided contains source code of user interface and helper classes + no modification form your side + developed classes must be placed in src and tests + connect implementation to GUI: write class Facade in worms.facade + +### method Facade + implements provided interface IFacade from package worms.facade + IFacade.java contains additional instructuons on implementation required methods + +### start program + run main method in class worms.Worms + press keys to modify state of program (see page 7) + GUI displays part of space: worms may leave and return to visible area + we will test your implementation by running JUnit tests against your implementation of IFacade + IFacade shall only throw ModelException + incomplete test class is included to show what our tests look like + +### Submitting + + solution: submit jar file (individually by all team members) + before 11/03 at 11:59 PM + include all source files (including tests) and generated class files + include name, course of studies and link to your code repository in comments of solution + +### Feedback + + TA will give feedback + feetback sessions between 19/03 en 30/03 (Toledo)