Level 2.4.1 - solveTheMaze | Karel Programmierung

preview_player
Показать описание
Vielen Dank für die kostenlose Bereitstellung des Programms :D

00:00 Intro
00:26 Vorüberlegung
01:31 Erster Ansatz
04:50 Optimierung
05:25 Zweiter Ansatz
10:51 Code Erläuterung
14:50 Schlussworte
15:29 Outro

Danke für die Inspiration @NiklasSteenfatt
Рекомендации по теме
Комментарии
Автор

Ihr programmiert bestimmt alle schon fleißig, aber falls nochmal ein Neuling wie ich drüber stolpert, es geht noch etwas kürzer.


void solveTheMaze(){
while (!onBeeper()){
if (leftIsClear()){
turnLeft();
}
if (frontIsClear()){
moveForward();
}
else{
turnRight();
}
}

}

sebastianbratge
Автор

schönes Video und sehr gut verständlich

riicoiiaa-o
Автор

Ist zwar ne Kleinigkeit, aber muss in der Sackgasse nicht ein turnAround(); erfolgen und nicht zweimal rechts drehen?

daverub
Автор

void solveTheMaze()
{
while (!frontIsClear())
{
turnRight();
}
while (frontIsClear() && !onBeeper())
{
moveForward();
while (!frontIsClear() && !leftIsClear())
{
turnRight();
}
if (leftIsClear())
{
turnLeft();
}
}
}

Meine Version, was meinen die mit etwas mehr Erfahrung dazu? :)

nielsgoedicke
Автор

Puhh das level hat mich auch eine nacht zum nachdenken gebraucht.
Habe jetzt zwar einen 34zeilen schweren code, aber er klappt bei jedem level :D.

void solveTheMaze()
{
while(!onBeeper())
{
while(!frontIsClear())
{

{
turnAround();
}
else if(!rightIsClear())
{
turnLeft();
}
else if(!leftIsClear())
{
turnRight();

}
else if(!frontIsClear())
{
turnLeft();
}
}

{

moveForward();
if(leftIsClear())
{
turnLeft();
}
}
}
}

Pinguinliebe
Автор

//2.4.1
void solveTheMaze () {

while (!onBeeper()) {
while (frontIsClear() && !leftIsClear() && !onBeeper()) {
moveForward();
}
if (leftIsClear() && !onBeeper()) {
turnLeft();
moveForward();
} else if (rightIsClear() && !onBeeper()) {
turnRight();
} else if (!onBeeper()) {
turnAround();
}
}

}


das Level hat echt gedauert. danke für die tipps. wie immer klasse :)

db
Автор

Wirst du alle Kapitel noch durchgehen?

errorxd
Автор

Bei meinem Code habe ich Aufgabe 1.4.3 walkTheLabyrinth als Vorlage genommen und etwas verändert

void solveTheMaze(){
while(!onBeeper()){
if (frontIsClear()){
moveForward();
}
else if (!frontIsClear() && leftIsClear()){
turnLeft();
moveForward();
}
else if (!frontIsClear() && rightIsClear()){
turnRight();
moveForward();
}
else if (!frontIsClear() && !leftIsClear() && !rightIsClear()){
turnAround();
}
if (leftIsClear()){
turnLeft();
}
}
}

chrisburg
Автор

nur mal so by the way du hast ne mega angenehme Stimme :D

Lara-nxut
Автор

Man hört dich sehr sehr leise in diesem Video.
Ich habe bislang jedes Labyrinth einwandfrei mit meinem Code absolvieren:

//2.4.1
void solveTheMaze(){
while(!onBeeper()){
if(!frontIsClear() && leftIsClear()){
turnLeft();
}
else if(frontIsClear() && leftIsClear()){
turnLeft();
}
else if(!frontIsClear() && rightIsClear()){
turnRight(); //vor allem das braucht man um 14:08 zu verhindern :)
}
else if(!frontIsClear() && !rightIsClear()){
turnLeft();
}
if(frontIsClear()){
moveForward();
}
}
}

CalamityFreddi
Автор

Find meins eigentlich ziemlich simpel. Eben sagen das er laufen soll bis onBeeper und dann einmal alle Möglichkeiten von Wegrichtungen abklappern:

void solveTheMaze()
{
while(!onBeeper())
{
if(frontIsClear())
{
moveForward();
}
else if(rightIsClear())
{
turnRight();
}
else if(leftIsClear())
{
turnLeft();
}
else
{
turnAround();
}
}
}

stevo-fdlc
Автор

Hab sicher eine halbe Stunde lang überlegt und bin zu diesem Code gekommen... wie könnte ich ihn noch ein bisschen vereinfachen? Verbesserungsvorschläge bitte unter diesen Kommentar. Danke :D

void solveTheMaze()
{
while(!onBeeper())
{
Sucher();
}
}

void Sucher()
{

{
moveForward();
}

{
turnRight();
moveForward();
}

{
turnLeft();
moveForward();
}

{
turnLeft();
moveForward();
}

{
turnAround();
moveForward();
}
}

Dave
Автор

Ich hab bei mir zuhause beim Coden auch was geschafft und bisher klappt es sehr gut hiermit:
void solveTheMaze(){
while (!onBeeper()){
SRCHalgo();
}
}
void SRCHalgo()
{
if (frontIsClear()){
moveForward();
}
else if (rightIsClear()){
turnRight();
}
else {
turnLeft();
}
}

bisher hat er den Beeper immer gefunden findet jemand vielleicht einen Fehler in meinem Code ?

felixbeutin