Hallo Zusammen,
Wie haben in Informatik ein Hase und Jäger Spiel bekommen.
Spielfeld etc war schon vorgegeben, wir sollten nur die Such/Lauf Prozeduren für Jäger und Hase schreiben.
Zur zeit läuft es so ab, dass der Hase (roter Pfeil) "Zufällig" durch das Labyrinth läuft, der Jäger hingegen durch ein Arrag gesteuert (heißt "Schatten"). Der Jäger macht 2 Schritte der Hase nur einen. Früher oder später findet er ihn dann.
Nun soll das ganze mit Hilfe von Phytagoras verbesster werden, das der Jäger also die Position des Hasens weiß und nun mit Hilfe der Dreiecksberechnung in die Richtung des Hasens geht.
Leider fehlt mir da der Ansatz wie man den Jäger den Phytagoras ausrechenen lässt und ihn dem entsprechend laufen lässt, und hoffe da auf eure Hilfe
Das ist die Suchprozedur, falls es dazu noch Fragen gibt erkläre ich das natürlich gerne:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115:
| For spalte:=0 to 22 do begin For zeile:=0 to 22 do begin Schatten[spalte,zeile]:=0; end; end; Schritte:=0; While (not((vorneZiel)or(rechtsZiel)or(linksZiel))) do begin Jaegerschritt; Jaegerschritt; Hasenschritt; end;
CBWahl.Enabled:=true; end;
procedure TForm1.Jaegerschritt; begin If (vornefrei and (not(rechtsfrei)) and (not(linksfrei))) then begin end; If (not(vornefrei) and not(rechtsfrei) and not(linksfrei)) then begin Linksdrehen; Linksdrehen; end; If (not(vornefrei) and not(rechtsfrei) and (linksfrei)) then begin Linksdrehen; end; If (not(vornefrei) and (rechtsfrei) and not(linksfrei)) then begin Rechtsdrehen; end; If ((vornefrei) and (rechtsfrei) and not(linksfrei)) then begin If Schatten[xvorne,yvorne]>Schatten[xrechts, yrechts] then begin rechtsdrehen; end; end; If ((vornefrei) and not(rechtsfrei) and (linksfrei)) then begin If Schatten[xvorne,yvorne]>Schatten[xlinks, ylinks] then begin linksdrehen; end; end; If (not(vornefrei) and (rechtsfrei) and (linksfrei)) then begin If Schatten[xrechts,yrechts]>Schatten[xlinks, ylinks] then begin linksdrehen; end else begin Rechtsdrehen; end; end; If ((vornefrei) and (rechtsfrei) and (linksfrei)) then begin If (Schatten[xrechts,yrechts]<=Schatten[xlinks, ylinks])and(Schatten[xrechts,yrechts]<Schatten[xvorne, yvorne]) then begin Rechtsdrehen; end else begin If (Schatten[xlinks,ylinks]<Schatten[xrechts, yrechts])and(Schatten[xlinks,ylinks]<Schatten[xvorne, yvorne])then begin Linksdrehen; end; end; end; vorwärts; Schatten[x,y]:=Schatten[x,y]+1; Inc(Schritte); LSchrittzahl.Caption:=IntToStr(Schritte);
end;
procedure TForm1.Hasenschritt; begin randomize; If (vornefreih and (not(rechtsfreih)) and (not(linksfreih))) then begin end; If (not(vornefreih) and not(rechtsfreih) and not(linksfreih)) then begin Linksdrehenh; Linksdrehenh; end; If (not(vornefreih) and not(rechtsfreih) and (linksfreih)) then begin Linksdrehenh; end; If (not(vornefreih) and (rechtsfreih) and not(linksfreih)) then begin Rechtsdrehenh; end; If ((vornefreih) and (rechtsfreih) and not(linksfreih)) then begin if random(2)=1 then rechtsdrehenh; end; If ((vornefreih) and not(rechtsfreih) and (linksfreih)) then begin If random(2)=1 then linksdrehen; end; If (not(vornefreih) and (rechtsfreih) and (linksfreih)) then begin If random(2)=1 then linksdrehenh else rechtsdrehenh; end; If ((vornefreih) and (rechtsfreih) and (linksfreih)) then begin If random(3)=1 then rechtsdrehenh; If random(3)=2 then linksdrehenh; end; vorwärtsh; end;
end. |
Und ein Bild:
Moderiert von
Martok: Quote- durch Delphi-Tags ersetzt