Jump to content
TabletopWelt

Wir basteln uns ein Warhammer-Game...


Empfohlene Beiträge

jo also ich bin noch am werkeln ... die arbeit is in letzter zeit ein bissel stressig muss heut noch AID machen ... aber denk mal das ich spätestens am wochenende dazu komme ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Darkstevelines

Generell hat Du (oder solltest) von jedem Regiment ein Struct (oder ähnliches) anlegen.

In diesem (warscheinlich als Array oder so was ) sind dann für jedes Regiment die x/y Koordinaten gespeichert.

Generell kannst Du dann immer per this.pos-x = this.pos-x + (x-Postition Mauszeiger) erhöhen.

Du hast also ein array

$reg1

{

typ=spearmen

name=spearmen1

posx=4

posy=5

lenghtx=4

lengthy=4

usw..

}

Jetzt kannst Du jeder Zeit sagen..

reg1.x = reg1.x + ((reg1.x - xstring)/50)

oder so was in die Art.

So hast Du immer die Position und die Grösse des Regiments und kannst es ohne Probleme plazieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Warhammertime:

Was für eine Sprache würdest du denn Vorschlagen? Die "meisten" oder sind es nur 2 (?), können VB...und bis jetzt hat niemand etwas dagegen gesagt...wieso nicht VB? Ich kann dir ein Tutorial schicken, wenn du möchtest...aber die Software dazu müsstest du dir selbst auftreiben. Mit HTML geht das nicht...mit Java wäre es vielleicht auch möglich, aber dann braucht man einen JBuilder von Borland, oder VJ und das besitzen nicht viele...ich hab einen JBuilder, aber kann noch zuwenig Java...und wir haben schon mit VB "angefangen"...

das ist halt ein bisschen blöde, weil zwar die meisten mitmachen wollen, aber nicht alle die gleiche Programmiersprache beherrschen...

ich kann auch C++ lernen, das ist für mich kein Problem...bin eigentlich sowieso dabei..Java mach ich danach auch noch...aber was ist mit den anderen?

Also wenn es geht, kann man ja in verschiedenen Sprachen programmieren und dann alles zusammenfügen...aber wie und ob das geht, weiss ich nicht...aber ich kann das ja mal in einem Programmierer-Forum nachfragen und sonst auf einer VB-Seite...

wenn es möglich ist, find ich es schon noch heraus...

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

an Aknorb: (sorry, hätte es in den letzten Post schreiben können, habs aber vergessen...:???: )

also wie meinst du das mit einem Array? Das man diese Daten irgendwo abspeichert und er dann einfach für das jeweilige Regiment darauf zugreift? Weiss aber nicht wie das geht...man sollte Objekte als variable haben...aber wie das geht, weiss ich auch nicht...mal im Forum nachfragen ;)?

Und wie meinst du das mit den Koordinaten? Für was willst du die Koordinaten speichern? die kann man direkt abrufen, wenn man das Object anklickt...(zumindest in VB)

was ist eigentlich dein Quellcode, den du angegeben hast?

sieht mir schon fast nach C++ aus...stimmts?

aber wie funktioniert das, was du geschrieben hast? Bewegt sich das Object dann langsam an den angeklickten Ort, oder springt es unter einmal dahin?

Bei meinem code (in einem timer) bewegt er sich langsam ...

noch etwas an Warhammertime:

Welchen Quelltext hättest du denn gerne?

Ich kann dir den, den ich schon geschrieben habe schon schicken...

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

gestern hab ich noch weiterprogrammiert...

hab dann den Code so eingegeben:

zuerst wertet er aus, welches Regiment ich ausgewählt hab, dann gibt er ihm den entsprechenden Index. Nun klicke ich auf einen Punkt, dessen Koordinaten gespeichert werden. Das ganze in einen Timer verpackt sieht dann so aus:

Private Sub timbewegung() (oder so ähnlich)

regiment(i).left = regiment(i).left + ((ykoor-ypos)/(xkoor-xpos))

regiment(i).top = regiment(i).top + ((xkoor-xpos)/(ykoor-ypos))

If regiment(i).left = xkoor AND _

regiment(i).top = ykoor then

timbewegung.enabled = false

end if

end sub

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmmm.. erst mal, meine Code Schnippsel sind keine richtige Sprache. Sie sind an C angelehnt, ja ;-). Das ist die einzige Sprache, die ich so in etwa kann.

Mir entzieht sich allerdings mal was Du mit "((ykoor-ypos)/(xkoor-xpos))" meinst..

Gut (ykoor-ypos) die x-Koordinate minus die y-Position?? Warum und dann noch duch das selbe mit x Teilen??

Eigentlich willst Du doch einfach ein Objekt so lange Richtung x und y bewegen, bis xPos und yPos gleich xKoord und yKoord sind, oder nicht??

Gut, ich verstehe es nicht, vielleicht kannst Du es mal etwas näher erleutern ;-)

Ach, wegen den Sprachen.. ein Menü ist in VB schneller Programmiert als in C++. Von Java würde ich die Finger weg lasen bei diesem Projekt. Das währe einfach zu langsam.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ Darkstevelines

Gut schick mir mal einen Turtorial an warhammertime@web.de!!

Ich hasse es eben nicht richtig mitreden zu können, aber wenn ich mich dann ein bischen eingearbeitet habe dann geht das schon schnell!!

Hab die Grundlagen von Java Script auch in ein paar Tagen gelernt, mit einem groten schlechten Buch!:bking:

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Darkstevelines:

Dein Tut funkt nicht bei mir-> "Datei wird aufgrund eines Fehlers geschlossen...."

Soll ich wenigstens schon mal die Startoberfläche/Hauptmenü vorbereiten? Wenn ja müsst ihr mir nur sagen wie ihr euch das Vorstellt.

Nieder mit dem Pessimismus

Link zu diesem Kommentar
Auf anderen Seiten teilen

mir ist grad aufgefallen, dass dieser Code für die Bewegung, nicht stimmt...wahrscheinlich...

das muss man ausrechnen.

Also um es mal zu erklären:

Ich möchte, dass der PC den jetzigen Standort ermittelt (per X-/yos) und diese mit dem gewünschten Punkt (x-/ykoor) vergleicht...dann soll er eine Linie ziehen (mental ;)) und das Objekt gleichmässig auf dieser Linie bewegen...da müsste man halt ausrechnen lassen

wie weit er sich auf der X-Achse bewegen muss, damit er gleich schnell auf der gewünschten Breite ist, wie er für die Höhe braucht...und dafür braucht man eine mathematische Formel...und die Such ich zur Zeit. Wenn das klappt, können wir das Objekt nämlich an jeden beliebigen Punkt bewegen lassen. Und dann kann man ihn noch einschränken und sagen, er soll den Timer nach z.B. 4x10Pixel (entspricht hier 4Zoll) stoppen.

Aber die 10 Pixel sind nur eine Möglichkeit. Man muss das halt definieren, wieviele Pixel wir als Zoll benutzen.

Deshalb könnt ihr den Code mit ((ykoor-ypos)/(xkoor-xpos)) vergessen...das war ne Testformel. Aber für die dies interessiert:

Das bedeutet, dass er die gewünschten Y-Koordinaten von den aktuellen abzieht und diese mit den jeweilige X-Koordinaten dividiert...dann hätte man einen schönen Bruch...aber das klappt nicht...

wisst ihr wie die Formel für das geht? Wer ist so gut in Mathe?

@MoD:

habs dir nochmals geschickt...

@Warhammertime:

habs dir auch gerade geschickt.

Und "mein" Tut. find ich überhaupt nicht schlecht. Das find ich einfach super...

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

hey Leute...an alle die VB-Programmieren:

hab grade ne Seite entdeckt:

www.vb-games.de

da ist sicher ne Menge drauf was wir brauchen könnten...

hab sie erst kurz angeschaut...sieht aber toll aus...ich denke da werden wir eine Menge finden...

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Dankeschön an Darkstevelines, nur ich wollt mal fragen, was VB als heißt, kenne die abkürtzung net...und danke für die tipps...

aso klar, VB heißt Visual Basic, ich kann aber nur normales, was ist anders?

Erst jetzt fällt mir auf, dass meine Sig total bescheuert ist(war)!

*Silberbart

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Darkstevelines

Versuchen wir es mal damit:

// aktuelle Position des Regiments

xa = akt X-Pos

ya = akt Y-Pos

// neue Position, wird durch Maus Curser ermittelt

xn = neue X-Pos

yn = neue Y-Pos

for (x=xa; x<=xn; x++)

   for (y=ya; y<=yn; y++)

   regiment.posx = x

regiment.posy = y

Ok, ich gebe es zu, es ist (mehr oder weniger) C-Notation ;-)

Es wird die akutellen Koordinaten und die Zukünftigen Koordinaten des Regiments ermitteltl. Jetzt wird das Regiment x/y immer weiter Richtung der Zukünftigen Position verschoben..

Gut, es sind Fehler drin

- wenn xa = xn dann passiert leider noch nichts..

- die Abfrage muss noch rein..

Das mal als Gedanken Gang, wenn ich wieder 5 Ruhige Minuten habe strukkturire ich das noch um.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok.. paar Minuten später

// aktuelle Position des Regiments

xa = akt X-Pos

ya = akt Y-Pos

// neue Position, wird durch Maus Curser ermittelt

xn = neue X-Pos

yn = neue Y-Pos

// Zähler Variable

x = 0

// Solange die aktuelle x/y Pos nicht gleich der gewünschten x/y Pos ist..

While ((xa<>xn) || (ya<>yn))

// x- Annäherung

  if (xa < xn)

xa = xa + 1

elseif (xa > xn)

xa = xa - 1

endif

// y- Annäherung

if (ya < yn)

ya = ya + 1

elseif (ya > yn)

ya = ya - 1

endif

// Abbrechen der Schleife, wenn 4 "Züger" gemacht wurden

  x++

  if (x = 4) exit

// Zeigen der Aktuellen x/y Position

  Display(reg.x reg.y) .. oder so ☻

endwhile

Da sollte mal alles drüber abwickelbar sein. Überlege Dir das mal, ob das so ok währe..

Link zu diesem Kommentar
Auf anderen Seiten teilen

nur jetzt ist das eine normale Prozedur, so wie ich das verstanden habe. Das müsste man nun noch in einen Timer verpacken. Denn sonst geht das ruckzuck, und das Objekt ist an dem Ort, an des es hinfahren soll. Sprich, der Computer rechnet das so schnell, dass du gar nicht siehst, wie es sich bewegt...

aber wenn du das in einen Timer verpackst und ihm sagst, er soll das in 20msec-Schritten machen, sieht das gut aus.

Jetzt aber noch das grosse ABER:

mit dieser Prozedur, sprich mit dem+1 bewegt sich das Objekt immer in einem 45° Winkel. Wir sollten den Winkel aber berechnen lassen und ihn dann entsprechend stark nach links/rechts und rauf/runter verschieben lassen.

Das ist eben das Problem. Aber du hast mich auf eine Idee gebracht.

Ich sag ihm, er soll die Distanz zum gewünschten Punkt für die beiden Achsen berechnen und dann die Bewegung des Modells*die seitliche Differenz/100 und die Bewegung * die Höhendifferenz/100

ich weiss ja nicht, aber wieso ist mir das nicht schon früher aufgefallen. Dann bleibt das Steigungsdreicek immer gleich, und trotzdem können wir steuern wie weit das gehen soll...

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

kann man da module einbinden ??? nebenbei gefragt wie kann ich variablen beim aufruf eines modules mitübergeben so das das modul quasi immer flexibel einsetzbar is z.B. für jedes regiment ... wie sag ich dme modul welches regiment ich bewegen will ?

also wie übergeb ich die variablen werte ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

(bin untröstlich)

was verstehst du unter normalem und anderem VB?

Wir programmieren hier mit VB ein WH-F game...hab ich aus versehen etwas von speziellem VB gelabbert? Wenn ja, dann tuts mir leid....sonst hast du mich falsch verstanden. Wir benutzen hier normales VB, aber auf höherem Niveau...

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Darkstevelines

Es sollte auch kein richtiger Code sein, sondern nur eine Beispiel wie ich es versuchen würde zu machen. Das mit dem Timer und dem "Winkel" sind andere Sachen. Die sind nur noch für die Schönheit da, erstmal sollte das generelle laufen laufen ;-)

@Riser

Module sollte gehen.. Variablen, man kann glaube ich in einem Projekt globale Variablen deklarieren, dann geht das oder man macht Funktionen mit übergabe und Rückgabe Parameter

Link zu diesem Kommentar
Auf anderen Seiten teilen

an Riser:

Was verstehst du unter Modul? Willst du da die Funktionen reinschreiben? Ich weiss schon was ein Modul ist, aber was willst du damit erreichen? Ich habs bis jetzt so gemacht, dass ich die Regis, mit regiment benannt habe, und dann jedem einen anderen Index, weil ich noch nicht weiss, wie man eine Funktion für mehrere Objekte gültig machen kann...

an Warhammertime:

im Prinzip hüpfen sie zu den Punkten, aber in so kleinen Schritten und so schnell (jede 20 millisekunden einige Pixel), sodass es wie eine Bewegung aussieht ;)

an Aknorb:

Ja, dann ist dein Code o.k...

aber ich gib grad heute Abend noch den Code, den ich mir überlegt hab ein, und dann sollte es gehen...

Übrigens, hast du das tutorial schon angeschaut?

funktioniert es?

Und bei Warhammertime auch?

und bei dir, Riser?

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich hab nur das prog von dir ... net das tut oder is das das ???

naja also mit dem modul dachte ich das so ... da du das ja sonst immer für jedes regiment schreiben müsstest kann man ja nen modul oder ne funktion schreiben die statt dem regiment namen ne "leervariable" enthält und dann setzt man nur für diese variable das regiment ein ... sowas geht das weiß ich aber net wie ... *grübel*

Link zu diesem Kommentar
Auf anderen Seiten teilen

die Idee hatte ich auch schon. Das müsste sicher gehen, aber ich weiss auch nicht wie...aber das find ich sicher noch...sonst registrier dich auf www.programmierer-board.de da findest du sicher was. Bin auch da...

und schau dir www.vb-games.de an...

auch da ist einiges Interessantes drauf...

hab ich dir das tut nie geschickt? Brauchst du es?

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich find eure Ideen Klasse!!

Würd auch gerne mitmachen, wenn ich könnte!

Könnt ich evt. das TUT auch haben?!

Bye

Krieg ist ein Winterschlaf der Kultur

- Friedrich Willhelm Nietzsche

Stay METAL! Stay BLACK! UP TE IRONS! Esst Tiere! ( ;) Big Choppa)

Mitglied von WARHAMMER BASILISK

Link zu diesem Kommentar
Auf anderen Seiten teilen

O.K...das Mail wäre unterwegs.

Leider hab ich heute noch nichts gemacht.

Aber ich schreib euch schnell mal den Quellcode, den ich mir überlegt habe, um das Objekt zu bewegen (nur die Deklarationen dazu und die Prozedur für den Timer):

Deklarationen:

Dim xkoor as integer, ykoor as integer,xpos as integer, ypos as integer

Dim width as integer, height as integer, maxspeed as integer

Dim zaehler as integer

Was bei Klicken so geschieht:

zaehler=0

width = (maxspeed * ((xkoor-xpos)/(sqrt(sqr(xkoor-xpos)+sqr(ykoor-ypos))))/100

height = (maxspeed * ((ykoor-ypos)/(sqrt(sqr(xkoor-xpos)+sqr(ykoor-ypos))))/100

Prozedur:

Private Sub timer1_timer()

zaehler = zaehler+1

objekt.left = objekt.left + width

objekt.top = objekt.top + height

if zaehler = bewegung then

timer1.enabled = false

end if

end sub

als erklärung:

bei width berechnet er die Länge, bis zum gewünschten Punkt und rechnet die durch die Bewegung (=Maxspeed). Dann wird per Strahlensatz dieser Wert auf die Breite (bzw. auf die Länge bei Height) übertragen und das ganze durch 100 dividiert, damit wir kleinere Schritte haben. Das kann man aber noch variieren. Dann beim Timer zählt er das einfach zu der aktuellen Position dazu...aber die "Bewegung" ist wahrscheinliich gleich der Maxspeed. Das muss ich noch ausprobieren. Dann sollte er sich immer auf dem gleichen Steigungsdreieck bewegen und nach seiner max. Bewegung stoppen. Wenn dsa funktioniert, dann ist der Rest der Bewegung nicht mehr so schwer. Hauptsächlich grafisch. Weil wie man Objekte dreht, hab ich schon mal gefunden, muss es nur neu aufstöbern. Und dann lassen wir den Benutzer angeben, wie weit sich das Modell nach vorne bewegen soll, und dann darf er wählen ob es sich drehen soll. Danach kann es wieder weiterlaufen, falls es noch reicht ;)

hoffe es klappt...

wenn ihr den Code nicht versteht, fragt einfach. Ich bin gerne bereit alles zu erklären.

Und an Riser noch:

das mit der multifunktionalen Funktion schau ich noch...bis jetzt hab ichs wie gesagt mit Index gemacht...er gibt dem gewählten Objekt einfach einen Index und dann entscheidet der Index, welches Objekt bewegt wird ;)

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Ihrem Gerät platziert, um die Bedinung dieser Website zu verbessern. Sie können Ihre Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Sie damit einverstanden sind.