opgave part 2 worms + samenvatting part 2
This commit is contained in:
173
docs/samenvatting part 1.md
Normal file
173
docs/samenvatting part 1.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# Worms #
|
||||
|
||||
### 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
|
||||
orientation
|
||||
radius
|
||||
mass
|
||||
points
|
||||
|
||||
|
||||
### location
|
||||
(x,y) coordinaten
|
||||
in meter
|
||||
defensief
|
||||
|
||||
### orientation
|
||||
orientation hoek theta (radialen)
|
||||
rechts: th0 boven: pi/2
|
||||
nominaal
|
||||
0..2pi
|
||||
|
||||
### shape
|
||||
cirkel
|
||||
min 0.25m straal (final) (in toekomst veranderen maar niet tijdens leven van worm)
|
||||
kan veranderen tijdens uitvoering
|
||||
defensief
|
||||
|
||||
### massa - DONE?
|
||||
afh. van radius
|
||||
in kg
|
||||
p = 1062 kg/m3
|
||||
m = p · (4/3 · πσ^3)
|
||||
|
||||
### 'action' points = stamina
|
||||
points = massa
|
||||
uitgedrukt in int (afgerond tot dichtsbijzijnde)
|
||||
massa veranderd -> max punten ook
|
||||
0 <= punten <= max
|
||||
total
|
||||
|
||||
|
||||
### naam - DONE
|
||||
min 2 letters
|
||||
1e letter uppercase
|
||||
alleen letters quotes en spaties
|
||||
defensief
|
||||
later mogelijk meer tekens
|
||||
|
||||
### Opmerkingen
|
||||
|
||||
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)
|
Reference in New Issue
Block a user