Level 2.3.1 - saveTheFlowers - Teil 1 | Programmieren mit Karel

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

0:00 Einführung
0:13 2.3.1 saveTheFlowers - Der Aufstieg
7:10 2.3.1 saveTheFlowers - Der Abstieg
11:25 Schlussworte

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

Nach einem halben Jahrhundert habe ich endlich mal die Lösungen gefunden
Mach weiter so!

leohombrink
Автор

Eine Lösung, Ohne Repeat und funktioniert bei jeder Variante.


void saveTheFlowers(){



}

void Abstieg(){
while(!rightIsClear()){
dropBeeper();
moveForward();
}
if(rightIsClear()){
turnRight();
}
while(frontIsClear()){
moveForward();
}
if(!frontIsClear()){
turnLeft();}
}


void Aufstieg(){
if(!frontIsClear()){
turnLeft();
}while(!rightIsClear()){
moveForward();}
if(rightIsClear()){
turnRight();
moveForward();
}
if(onBeeper()){
pickBeeper();}
}

Brian-soel
Автор

Ich habe mit dem Programmieren / Karel gerade erst angefangen, aus reiner Neugier (gerade im Sinne von vor 3 Tagen) und meine Lösung sieht wie folgt aus (Ich weiß gar nicht, ob man an dieser Stelle überhaupt schon die ganzen Befehle wie If, While usw. nutzen "soll". Vielleicht wäre es interessant, nach dem Durchspielen alle Levels noch mal durchzumachen, aber möglichst generalisierte Programme zu schreiben.
Egal, hier meine Lösung nach 3 Tagen:

void saveTheFlower()
{
EineStufe();

repeat (3)
{
KeineBlume();
}
moveForward();
dropBeeper();

repeat (4)
{
Abstieg();
}
}
void EineStufe()

{

moveForward();
pickBeeper();
turnLeft();
moveForward();
moveForward();
turnRight();
}

void KeineBlume()

{
moveForward();
turnLeft();
moveForward();
moveForward();
turnRight();
}

void Abstieg()

{
moveForward();
turnRight();
moveForward();
moveForward();
turnLeft();
}

AncientSteel
Автор

Hallo :)
Bist du eigentlich ein programmier Anfänger oder hast du schon etwas Erfahrung?

knoweledgeispower
Автор

Werde jetzt jeden Tag einen Kommentar auf deinen Videos schreiben XD

Lara-nxut
Автор

hey mega gutes Video ^^, finde es immer cool Lösungen von anderen zu sehen und wie Individuell sie sein könne :D. Ich pack mal meine auch rein und bin für Verbesserungen offen ^^

void saveTheFlowers()
{
turnLeft();
repeat(5){
up();
}dropBeeper();
moveForward();
turnRight();
moveForward();
repeat(3){
down();
}
while(frontIsClear()){
moveForward();
}turnLeft();
}

void up()
{
while (! rightIsClear()){
moveForward();
} turnRight();
moveForward();
if (onBeeper()){
pickBeeper();
turnLeft();
}
}

void down()
{
while (frontIsClear()){
moveForward();}
if (!frontIsClear()){
dropBeeper();
turnLeft();
moveForward();
turnRight();
}
}

sapientesgladio
Автор

Gutes Video, ich habe versucht die Aufgabe ohne Auf- und Abstieg zu lösen, am Ende fehlt mir leider die letzte Drehung nach links. Hier mein Ansatz:

void saveTheFlowers()
{
repeat(10)
{
if (leftIsClear())
{
turnLeft();

}
while(!rightIsClear())
{
moveForward();
}
turnRight();
moveForward();
if (onBeeper())
{
pickBeeper();

}
else if (!onBeeper() && (!frontIsClear()))
{
dropBeeper();
}
}
}

jannik
Автор

Meine lösung sieht nicht sehr schön aus aber funktioniert

void saveTheFlowers()
{
while(!frontIsClear()){
turnLeft();
while (!rightIsClear()){
moveForward();
}
turnRight();
if (beeperAhead()){
moveForward();
pickBeeper();

}else{
moveForward();
}
}
dropBeeper();
moveForward();
turnRight();
moveForward();
repeat(4){
while (frontIsClear()){
moveForward();
}
if (leftIsClear()){
dropBeeper();
turnLeft();
moveForward();
turnRight();
}
}
}

Chris-dfce
Автор

Bin die Sache etwas anders angegangen, klappt aber auch. Ohne Repeat oder so.

void saveTheFlowers ()
{
while (!frontIsClear())
{
turnLeft();
moveForward();
while (!rightIsClear())
{
moveForward();
}
turnRight();
moveForward();
if (onBeeper())
{
pickBeeper();
}
}
while (frontIsClear())
{
dropBeeper();
moveForward();
turnRight();
moveForward();
while (!rightIsClear() && frontIsClear())
{
moveForward();
}
turnLeft();
}
}

needsomeaim
Автор

void saveTheFlowers(){
BewegungNachOben();
dropBeeper();
moveForward();
turnRight();
moveForward();
BewegungNachUnten();
}

void BewegungNachOben() {
while (!frontIsClear()){
turnLeft();

}
while (!rightIsClear()){
moveForward();
}
turnRight();
moveForward();
BeeperSammeln();
while (!frontIsClear()){
BewegungNachOben();
}
}

void BewegungNachUnten() {

if (!rightIsClear() && frontIsClear()) {
moveForward();
BewegungNachUnten();
}
else {

turnLeft();
//hier Beeper droppen und prüfen, ob die Schleife verlassen wird
BeeperDroppen();

if (frontIsClear()) {
moveForward();
turnRight();
if (frontIsClear())
{
moveForward();
BewegungNachUnten();
}
else {

}


}

}}

void BeeperSammeln() {
while (onBeeper()) {
pickBeeper();
}
}

void BeeperDroppen() {
if (!rightIsClear() && frontIsClear() && leftIsClear()) {
dropBeeper();
}

}

funzt mit allen 3000 varianten ;) geht sicher auch einfacher, aber ich bin daran bald blöde geworden.

saikimtb
Автор

cooles Video


//2.3.1
void saveTheFlowers()
{
go_pick();
go_drop();
}
//2.3.1.a holen
void go_pick()
{
while(leftIsClear())
{
turnLeft();
while(!rightIsClear())
{
moveForward();
}
turnRight();
moveForward();
if(onBeeper())
{
pickBeeper();
}
}
}
//2.3.1.b bringen
void go_drop()
{
while(frontIsClear())
{
dropBeeper();
moveForward();
turnRight();
while(frontIsClear())
{
moveForward();
}
turnLeft();
}
}

dirkgunther
Автор

all levels checked, waht do you think about this one

void saveTheFlowers()
{
oneStepUp();
while(onBeeper())
{
pickBeeper();
oneStepUp();
}
dropBeeper();

while(frontIsClear())
{
allStepsDown();
}

}
void allStepsDown()
{
moveForward();
turnRight();
moveForward();
oneStepDown();
}
void oneStepDown()
{

while(frontIsClear())
{
moveForward();
}
turnLeft();
if(frontIsClear())
{
dropBeeper();
}

}

void oneStepUp()
{
turnLeft();
while(!rightIsClear())
{
moveForward();
}
turnRight();
moveForward();

drecksGame
Автор

Ich hab es z.B. so gelöst. Funktioniert bei jedem Berg in 2.3.1:

void saveTheFlowers()

{
turnLeft();
bergauf();
bergab();
turnLeft();
}




void bergauf()

{
while (frontIsClear()){
moveForward();
while (rightIsClear()){
turnRight();
if (beeperAhead()) {
moveForward();
pickBeeper();
turnLeft();
}
if (!beeperAhead()) {
moveForward();
}
if (!leftIsClear() && (!rightIsClear())) {
dropBeeper();
moveForward();
turnRight();
moveForward();
}
}
}
}






void bergab()

{
while (leftIsClear() && (!frontIsClear())) {
dropBeeper();
turnLeft();
moveForward();
turnRight();
while (frontIsClear()) {
moveForward();
}
}

}

markbrix