summaryrefslogtreecommitdiff
path: root/hamster/ls-Herbert und Robbi 2
blob: a8ce067ff164a7e58a04f2c137284f8e2f70b7d8 (plain)
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
(* 
        
          ********************************************************* 
          ********************************************************* 
          **                                                     ** 
          **               ls-Herbert und Robbi 2                ** 
          **                                                     ** 
          **                     Version 1.1                     ** 
          **                                                     ** 
          **                  (Stand: 30.03.88)                  ** 
          **                                                     ** 
          **                                                     ** 
          **         Autor: Wolfgang Weber, Bielefeld            ** 
          **                                                     ** 
          **                                                     ** 
          ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld ** 
          **                                                     ** 
          ** Copyright (C) 1988 ERGOS GmbH, Siegburg             ** 
          **                                                     ** 
          ********************************************************* 
          ********************************************************* 
 
                                                                           *) 
 
PACKET ls herbert und robbi 2  DEFINES
       rechts frei,
       links frei,
       hinten frei,
       korn vorn,    werkstueck vorn,
       korn links,   werkstueck links,
       korn rechts,  werkstueck rechts,
       korn hinten,  werkstueck hinten:
BOOL PROC rechts frei:
  rechts um;
  IF vorn frei
     THEN links um; TRUE
     ELSE links um; FALSE
  FI
END PROC rechts frei;
BOOL PROC links frei:
  links um;
  IF vorn frei
     THEN rechts um; TRUE
     ELSE rechts um; FALSE

  FI
END PROC links frei;
BOOL PROC hinten frei:
  kehrt;
  IF vorn frei
     THEN kehrt; TRUE
     ELSE kehrt; FALSE
  FI
END PROC hinten frei;
BOOL PROC korn vorn:
  IF vorn frei
     THEN untersuche feld vor dir
     ELSE FALSE
  FI.
  untersuche feld vor dir:
    vor;
    IF korn da
       THEN mache vorwaertsgehen rueckgaengig; TRUE
       ELSE mache vorwaertsgehen rueckgaengig; FALSE
    FI.
  mache vorwaertsgehen rueckgaengig:
    kehrt; vor; kehrt
END PROC korn vorn;

BOOL PROC korn links:
  links um;
  IF vorn frei
     THEN untersuche feld links
     ELSE rechts um; FALSE
  FI.
  untersuche feld links:
    vor;
    IF korn da
       THEN mache linkswende rueckgaengig; TRUE
       ELSE mache linkswende rueckgaengig; FALSE
    FI.
  mache linkswende rueckgaengig:
    kehrt; vor; links um
END PROC korn links;
BOOL PROC korn rechts:
  rechts um;
  IF vorn frei
     THEN untersuche feld rechts
     ELSE links um; FALSE
  FI.
  untersuche feld rechts:

    vor;
    IF korn da
       THEN mache rechtswende rueckgaengig; TRUE
       ELSE mache rechtswende rueckgaengig; FALSE
    FI.
  mache rechtswende rueckgaengig:
    kehrt; vor; rechts um
END PROC korn rechts;
BOOL PROC korn hinten:
  kehrt;
  IF vorn frei
     THEN untersuche feld hinter dir
     ELSE kehrt; FALSE
  FI.
  untersuche feld hinter dir:
    vor;
    IF korn da
       THEN mache kehrtwende rueckgaengig; TRUE
       ELSE mache kehrtwende rueckgaengig; FALSE
    FI.

  mache kehrtwende rueckgaengig:
    kehrt; vor
END PROC korn hinten;
PROC kehrt:
  links um; links um
END PROC kehrt;
PROC rechts um:
  links um; links um; links um
END PROC rechts um;
BOOL PROC werkstueck vorn:
  korn vorn
END PROC werkstueck vorn;
BOOL PROC werkstueck links:
  korn links
END PROC werkstueck links;
BOOL PROC werkstueck rechts:
  korn rechts
END PROC werkstueck rechts;
BOOL PROC werkstueck hinten:
  korn hinten
END PROC werkstueck hinten;
END PACKET ls herbert und robbi 2;

befehlssatz erweitern (TRUE)