Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

vince

Trainee

  • "vince" is male
  • "vince" started this thread

Posts: 58

Date of registration: Sep 30th 2009

Location: Über den Wolken

1

Thursday, January 7th 2010, 11:34am

Scheme Weihnachtsaufgabe - benachbarte Felder

Hi,

bei Aufgabe 4 implementiert man ja die Funktionen für die "adjazenten" Felder.


Wie man auf dem Bild sieht, müsste da natürlich nicht 3 sondern 5 stehen. Das is schonmal mein Problem :wacko:

Links und Rechts sind die Nachbarn klar, aber wie sieht es oben und unten aus?!

Angenommen das Feld mit der 3 hat die Koordinaten X/Y. Wenn ich nun zu dem Feld Y+1/X gehe, wo lande ich dann ? Auf dem linken oder rechten darüberliegenden ?


Ich hoffe man kann mich einigermaßen verstehen :D
Dieser Beitrag wurde bereits 2000 mal editiert, zuletzt von »vince« (Gestern, 11:11)

vince

Trainee

  • "vince" is male
  • "vince" started this thread

Posts: 58

Date of registration: Sep 30th 2009

Location: Über den Wolken

2

Thursday, January 7th 2010, 12:44pm

Ich bin schon ein bischen weiter 8)

Rechts-Oben -> X/Y+1
Links-Unten -> X/Y-1
Rechts -> X-1/Y
Links X+1/Y

Fehlt jetzt noch Rechts-Unten und Links-Oben.

Logischerweise müsste das so sein:
Rechts-Unten -> X-1/Y-1
Links-Oben -> X+1/Y+1

Da müsste jeweils eigentlich eine Diagonale als Ergebnis kommen. Stattdessen erhalte ich aber so einen Verlauf:





Immer:
Diagonal - Sprung - Diagonal - Sprung

Meine Methode sieht so aus:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
(method (adjacent-field? field)
          (cond ((and (= (- (send field x) 1) (x)) (= (send field y) (y))) #t)
                ((and (= (+ (send field x) 1) (x)) (= (send field y) (y))) #t)
                
                ((and (= (+ (send field y) 1) (y)) (= (send field x) (x))) #t)
                ((and (= (- (send field y) 1) (y)) (= (send field x) (x))) #t)      
                
                
                ((and (= (- (send field x) 1) (x)) (= (- (send field y) 1) (y))) #t) 
                ((and (= (+ (send field y) 1) (y)) (= (+ (send field x) 1) (x))) #t) 

                (else #f))
          )


Ich weiss net was ich übersehen hab. Vielleicht kann ja jmd. mal in seine funtkionierende Methode gucken :whistling:
Dieser Beitrag wurde bereits 2000 mal editiert, zuletzt von »vince« (Gestern, 11:11)

Salz

Opa

  • "Salz" is male

Posts: 144

Date of registration: Dec 3rd 2009

3

Thursday, January 7th 2010, 1:00pm

Ja, du hast ja für Felder mit gradem y-Wert andere benachbarte Felder als für Felder mit ungradem y-Wert.
d.h. prüfen ob y grade oder ungrade ist, und dann sind (y+-1, x-1) und (y+-1, x) benachbart oder (y+-1, x+1) und (y+-1, x). Welches welches ist weiss ich grade nicht aus dem Kopf, aber gibt nur ja 2 Möglichkeiten :)
Damals…

vince

Trainee

  • "vince" is male
  • "vince" started this thread

Posts: 58

Date of registration: Sep 30th 2009

Location: Über den Wolken

4

Thursday, January 7th 2010, 1:09pm

ahhh :thumbsup: danke :)
Dieser Beitrag wurde bereits 2000 mal editiert, zuletzt von »vince« (Gestern, 11:11)