Skip to content

Instantly share code, notes, and snippets.

@Crilou
Created November 23, 2018 00:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Crilou/887a301b483039c0e86c2fb0a4a5f958 to your computer and use it in GitHub Desktop.
Save Crilou/887a301b483039c0e86c2fb0a4a5f958 to your computer and use it in GitHub Desktop.
Mars Lander
case Y>Ymin && vSpeed>vSpeedmin && abs(hSpeed)<hSpeedmin && X>(landhere+breakdist):
vitesse = 4
angle = anglego
case Y>Ymin && X<((landhere.Y+landhere.X)/2-breakdist) && hSpeed==0:
Strategie = "go"
case Y>Ymin && X<((landhere.Y+landhere.X)/2-breakdist) && hSpeed>0 && vSpeed > vSpeedmin:
Strategie = "go"
case Y>Ymin && X>((landhere.Y+landhere.X)/2+breakdist) && hSpeed<0:
Strategie = "go"
case Y>Ymin && X>((landhere.Y+landhere.X)/2+breakdist) && hSpeed==0:
Strategie = "go"
case Y>Ymin && X<((landhere.Y+landhere.X)/2-breakdist) && hSpeed==0:
Strategie = "go"
case Y>Ymin && X<((landhere.Y+landhere.X)/2+breakdist) && X>(landhere.Y+landhere.X)/2 && hSpeed<0:
Strategie = "slowdown"
case Y>Ymin && X>((landhere.Y+landhere.X)/2-breakdist) && X<(landhere.Y+landhere.X)/2 && hSpeed>0:
Strategie = "slowdown"
case Y>Ymin && X>(landhere.Y+landhere.X)/2 && hSpeed>0:
Strategie = "wrongdirection"
case Y>Ymin && X<(landhere.Y+landhere.X)/2 && hSpeed<0:
Strategie = "wrongdirection"
case X>landhere.X+(landhere.Y-landhere.X)/3 && X<landhere.Y-(landhere.Y-landhere.X)/3 && abs(hSpeed)<5:
Strategie = "atterrissage"
case X>landhere.X-50 && X<landhere.Y-50 && vSpeed<(0-20) && abs(hSpeed)<5:
Strategie = "atterrissage"
case Y<Ymin && X<landhere.X+(landhere.Y+landhere.X)/3:
Strategie = "tropbas"
case Y<Ymin && X>landhere.Y-(landhere.Y+landhere.X)/3:
Strategie = "tropbas"
default:
Strategie = "slowdown"
}
//Action
switch ; Strategie {
case "go":
var anglego int = 45
if vSpeed > vSpeedmin {
switch {
case X<landhere.X && vSpeed > vSpeedmin:
vitesse = 4
angle = -anglego
case X>landhere.Y && vSpeed > vSpeedmin:
vitesse = 4
angle = anglego
case vSpeed < vSpeedmin:
angle = 0
if vSpeed > 0 {vitesse = 3} else {vitesse = 4}
}
} else {
switch {
case X<landhere.X && vSpeed > vSpeedmin:
vitesse = 4
angle = -angleflat
case X>landhere.Y && vSpeed > vSpeedmin:
vitesse = 4
angle = angleflat
case vSpeed < vSpeedmin:
angle = 0
if vSpeed > 0 {vitesse = 3} else {vitesse = 4}
}
}
case "slowdown":
vitesse = 4
var angleslow int = int(math.Asin(3.422/4)*180/math.Pi)
switch {
case abs(hSpeed) > 2 && hSpeed > 0 && vSpeed > vSpeedmin:
angle = angleslow
case abs(hSpeed) > 2 && hSpeed < 0 && vSpeed > vSpeedmin:
angle = - angleslow
case abs(hSpeed) <= 2 && hSpeed > 0 && vSpeed > vSpeedmin:
angle = int(math.Asin(float64(abs(hSpeed)/4))*180/math.Pi)
case abs(hSpeed) <= 2 && hSpeed < 0 && vSpeed > vSpeedmin:
angle = -int(math.Asin(float64(abs(hSpeed)/4))*180/math.Pi)
case abs(hSpeed) > 2 && hSpeed > 0 && vSpeed < vSpeedmin:
angle = angleflat
case abs(hSpeed) > 2 && hSpeed < 0 && vSpeed < vSpeedmin:
angle = - angleflat
case abs(hSpeed) <= 2 && hSpeed > 0 && vSpeed < vSpeedmin:
angle = int(math.Asin(float64(abs(hSpeed)/4))*180/math.Pi)
case abs(hSpeed) <= 2 && hSpeed < 0 && vSpeed < vSpeedmin:
angle = -int(math.Asin(float64(abs(hSpeed)/4))*180/math.Pi)
}
case "tropbas":
if abs(hSpeed) < hSpeedmin {
if hSpeed < 0 {
vitesse = 4
angle = -angleflat/2
} else {
vitesse = 4
angle = angleflat/2
}
} else {
if hSpeed < 0 {
vitesse = 4
angle = -angleflat
} else {
vitesse = 4
angle = angleflat
}
}
case "wrongdirection":
if vSpeed > vSpeedmin {
if hSpeed < 0 {
vitesse = 4
angle = -90
} else {
vitesse = 4
angle = 90
}
} else {
if hSpeed < 0 {
vitesse = 4
angle = -angleflat
} else {
vitesse = 4
angle = angleflat
}
}
case "atterrissage":
if (0-vSpeed)>35 {
angle=0
vitesse=4
} else {
angle=0
vitesse=2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment