Verfasst: Dienstag 22. Juli 2008, 20:45
Du solltest vielleicht nicht wild herum raten, sondern erst einmal Python-Grundlagen lernen.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
for x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6 in hexliste :
spiel.create_polygon ((x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6),outline="black",fill=choice(farbe)
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Skriptname: kai_22072008_02.py (wuf 23.07.2008
from math import sqrt
laenge = 20
hexliste = []
xpos = xorg = 20
ypos = yorg = 10
xoffset = laenge * 1.5
yoffset = sqrt(3) * laenge
""" Funktion zur Berechnung der Hexagonpunkte """
def neues_feld (xpos,ypos):
x1 = xpos
y1 = ypos
x2 = x1 + laenge
y2 = y1
x3 = x2 + (laenge/2.0)
y3 = y2 + ((laenge * sqrt(3)/2))
x4 = x2
y4 = (sqrt(3) * laenge) + y2
x5 = x1
y5 = y4
x6 = x1 - (laenge / 2.0)
y6 = y3
return (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6)
ANZAHL = 2
#~~ Anlegen der Hexliste
for counter in xrange(1):
if counter %2 == 0:
for k in xrange(ANZAHL):
hexliste.append(neues_feld(xpos,ypos))
xpos = xpos + xoffset * 2
import Tkinter as tk
master = tk.Tk()
spiel = tk.Canvas(master, width=900, height=900)
spiel.pack()
#~~ Zeichnen der Poly's
for poly_coords in hexliste:
spiel.create_polygon(poly_coords,fill='red')
master.mainloop()
Code: Alles auswählen
spiel.create_polygon(hexliste)
Code: Alles auswählen
#~~ Zeichnen der Poly's
for poly_coords in hexliste:
spiel.create_polygon(poly_coords,fill='red')
Code: Alles auswählen
from math import sqrt
class Hexfeld (object) :
laenge = 20
def __init__ (self):
pass
def berechne (self, xpos, ypos,feldid):
laenge = 20
x1 = xpos
y1 = ypos
x2 = x1 + laenge
y2 = y1
x3 = x2 + (laenge/2.0)
y3 = y2 + ((laenge * sqrt(3)/2))
x4 = x2
y4 = (sqrt(3) * laenge) + y2
x5 = x1
y5 = y4
x6 = x1 - (laenge / 2.0)
y6 = y3
return (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,feldid)
def berechne2 (self, xpos, ypos):
laenge = 20
x1 = xpos
y1 = ypos
x2 = x1 + laenge
y2 = y1
x3 = x2 + (laenge/2.0)
y3 = y2 + ((laenge * sqrt(3)/2))
x4 = x2
y4 = (sqrt(3) * laenge) + y2
x5 = x1
y5 = y4
x6 = x1 - (laenge / 2.0)
y6 = y3
return (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6)
def test (self,x):
print x
hexliste = []
xpos = xorg = 20
ypos = yorg = 10
xoffset = Hexfeld.laenge * 1.5
yoffset = sqrt(3) * Hexfeld.laenge
for reihe in range (42) :
if reihe %2 == 0 :
for feld in range (17) :
feldid = reihe,feld
feldid = Hexfeld()
hexliste.append (feldid.berechne (xpos, ypos,(feldid)))
xpos = xpos + xoffset * 2
xpos = xorg + xoffset
ypos = ypos + yoffset / 2
else :
for feld in range (16) :
feldid = reihe, feld
feldid = Hexfeld()
hexliste.append(feldid.berechne (xpos, ypos, (feldid)))
xpos = xpos + xoffset * 2
xpos = xorg
ypos = ypos + yoffset / 2
from Tkinter import *
master = Tk()
spiel = Canvas(master, width=1024, height=768)
spiel.pack()
for x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,feldid in hexliste :
spiel.create_polygon ((x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6))
spiel.create_polygon (feldid.berechne2(10,10))
master.mainloop()
Code: Alles auswählen
from math import sqrt
class Hexfeld (object) :
laenge = 20
def __init__ (self, xpos, ypos,feldid):
laenge = 20
self.xpos = xpos
self.ypos = ypos
x1 = xpos
y1 = ypos
x2 = x1 + laenge
y2 = y1
x3 = x2 + (laenge/2.0)
y3 = y2 + ((laenge * sqrt(3)/2))
x4 = x2
y4 = (sqrt(3) * laenge) + y2
x5 = x1
y5 = y4
x6 = x1 - (laenge / 2.0)
y6 = y3
Code: Alles auswählen
from math import sqrt
class Hexfeld (object) :
laenge = 20
def __init__ (self, xpos, ypos):
laenge = 20
self.xpos = xpos
self.ypos = ypos
def berechne (self, xpos, ypos) :
laenge = 20
x1 = xpos
y1 = ypos
x2 = x1 + laenge
y2 = y1
x3 = x2 + (laenge/2.0)
y3 = y2 + ((laenge * sqrt(3)/2))
x4 = x2
y4 = (sqrt(3) * laenge) + y2
x5 = x1
y5 = y4
x6 = x1 - (laenge / 2.0)
y6 = y3
return (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6)
x = 0
y = 0
for x in ("a","b","c") :
for y in ("d","e","f") :
feld = x+y
feld = Hexfeld(20,10)
print feld.berechne(20,10), feld
"cf".berechne(20,10)
Code: Alles auswählen
from math import sqrt
class Hexfeld (object) :
laenge = 20
def __init__ (self, xpos, ypos):
laenge = 20
self.xpos = xpos
self.ypos = ypos
def berechne (self, xpos, ypos) :
laenge = 20
x1 = xpos
y1 = ypos
x2 = x1 + laenge
y2 = y1
x3 = x2 + (laenge/2.0)
y3 = y2 + ((laenge * sqrt(3)/2))
x4 = x2
y4 = (sqrt(3) * laenge) + y2
x5 = x1
y5 = y4
x6 = x1 - (laenge / 2.0)
y6 = y3
return (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6)
x = 0
y = 0
felder = {}
for x in ("a","b","c") :
for y in ("d","e","f") :
name = x+y
feld = Hexfeld(20,10)
print feld.berechne(20,10), feld
felder[name] = feld
felder["cf"].berechne(20,10)
Code: Alles auswählen
h0 = Hex()
h1 = Hex()
h2 = Hex()
h3 = Hex()
#h0 hat Nachbarn h1 und h2
h0.neighbours = [h1, h2]
#h1 hat Nachbarn h0, h2 und h3
h1.neighbours = [h0, h2, h3]
#h2 hat Nachbarn h0 und h3
h2.neighbours = [h0, h3]
#h3 hat Nachbarn h1 und h2
h3.neighbours = [h1, h2]
derkai hat geschrieben:es gäb da allerdings wieder ein weiteres kleines Problem :
ich habe eine Liste mit sechs Elementen :
[0.0, 0.0, 80.0, 120.0, 0.0, 0.0]
und brauche den Index des kleinsten Elementes, was größer als Null ist.
Code: Alles auswählen
>>> alt = [0.0, 0.0, 80.0, 120.0, 0.0, 0.0]
>>> neu = sorted(list(set(alt)))
>>> mini = neu[0] if abs(neu[0])>0.001 else neu[1]
>>> mini
80.0
Code: Alles auswählen
>>> l = [0.0, 0.0, 80.0, 120.0, 0.0, 0.0]
>>> min(x for x in l if x>0)
80.0
>>> min(i for (i,x) in enumerate(l) if x>0)
2
>>>
Code: Alles auswählen
alt = [0.0, 0.0, 80.0, 120.0, 0.0, 0.0]
neu = sorted(list(set(alt)))
mini = neu[0] if abs(neu[0])>0.001 else neu[1]
mini_index = alt.index(mini)