Rhetos
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 9 Ω


Basic256 Programme Salesman


Quellcode


Basiswissen


Das untenstehende Programm kann direkt in Basic256 ausgeführt werden.

Quellcode


#Travelling Salesman
#Zehn Städte in einem 400 mal 400 Pixel großen Feld sind vorgegeben.
#Der Spieler kann selbst Wege definieren.
#Diese Wege werden von der Strecke berechnet und gespeichert.

graphsize 400,400

#Spielfeld wird gezeichnet
colour yellow
rect 0,0,400,400
colour darkyellow

dim stadtx (10)
dim stadty(10)

#Definition der zehn Städte über x- und y-Koordinaten
stadtx={14,40,380,350,200,120,90,280,300,120}
stadty={14,200,300,20,60,280,380,380,100,150}

for zeiger = 0 to 9
#Stadt wird als Kreis gezeichnet
circle stadtx[zeiger],stadty[zeiger],3
#Nummer der Stadt wird geschrieben
text stadtx [zeiger]+2,stadty[zeiger]+2,string(zeiger)
next zeiger

#Jetzt kann der Handlungsreisende einen Weg definieren

dim weg (10)
cls
print "Gib die gewünschte Reihenfolge der Wegstationen ein."
print "Bestätige nach jeder Station mit der Enter Taste."
for eingabe=0 to 9
print "Station Nummer ";
print eingabe
input weg[eingabe]
#Ab zweiter Eingabe wird der Weg gezeichnet
color orange
if eingabe >0 then
line stadtx[weg[eingabe-1]],stadty[weg[eingabe-1]],stadtx[weg[eingabe]],stadty[weg[eingabe]]
endif
next eingabe
#Weg von letzter Station zum Anfang wird gezeichnet
line stadtx[weg[9]],stadty[weg[9]],stadtx[weg[0]],stadty[weg[0]]
#Jetzt ist der Weg durch den Reisenden definiert.

#Berechnung der Wegstrecke
wegstrecke=0
for zeiger=0 to 9
#Teilstrecken über Pythagoras
if zeiger<9 then
kathetea=(stadtx[weg[zeiger]]-stadtx[weg[zeiger+1]])
katheteb=(stadty[weg[zeiger]]-stadty[weg[zeiger+1]])
teilstrecke=sqr(kathetea^2+katheteb^2)
wegstrecke=wegstrecke+teilstrecke
else
kathetea=(stadtx[weg[zeiger]]-stadtx[weg[0]])
katheteb=(stadty[weg[zeiger]]-stadty[weg[0]])
teilstrecke=sqr(kathetea^2+katheteb^2)
wegstrecke=wegstrecke+teilstrecke
endif
next zeiger

#Ausdruck des gerundeten Ergebnisses
cls
print "Die gesamte Wegstrecke beträgt "
print int (wegstrecke);
print " Pixel."
end