Was zur Dokumentation die bei mir eindeutig zu 100% fehlt^^
Ich habe nicht daran gedacht eine Doku dafür zu machen, weil iwie alles sehr offensichtlich ist.
Ich kann die Doku aber gerne Nachliefern.
mfg
Mars(i)
Was zur Dokumentation die bei mir eindeutig zu 100% fehlt^^
Ich habe nicht daran gedacht eine Doku dafür zu machen, weil iwie alles sehr offensichtlich ist.
Ich kann die Doku aber gerne Nachliefern.
mfg
Mars(i)
Besser als das von eukalyptus gehts wohl kaum noch
Auch die CPU-Last ist klasse. <1% im Regelfall.
gw
die user32.dll ist eine Dll-Datei die die z.b. die eingaben überwacht.
Wenn du ne Taste drückst oder die Maus bewegst kann man das über die user32.dll ermitteln.
In dem Fall von Sprenger wurde sie verwendet um die _IsPressed funktion zu nutzen.
Moin
Und wiedereinmal bin ich an einem Punkt angelang wo ich nicht weiter komme, und nix im Internet finde was mir weiterhilft...
Was ich brauche ist ein 2D Array in einem DllStruct (für die Übergabe an eine Dll)
Die DllStructSetData funktion in AutoIt unterstützt nur einen Index. Ich bräuchte eine lösung in der ein weiterer Index hinzu kommt.
Die funktion muss aber dennoch möglichst schnell sein. (ein [100][10] Array darf max 3-4ms brauchen... aber wirklich MAX)
Hat jemand ne Idee ?
[autoit]Local $Schuss_Struct = DllStructCreate('int a[100][9]')
For $i = 0 To $Anzahl Step 1
For $o = 0 To 8 Step 1
DllStructSetData($Schuss_Struct, 'a['&$i+1&']', $Schuss[$i][$o], $o+1)
Next
Next
Sieht schön aus, ist aber von vorne hinein zum Scheitern verdammt gewesen, weil ja der 2te Index fehlt^^
mfg
Mars(i)
Du hast 2 Möglichkeiten.
1. Das bild in Bildschirmgroße Bilder zu zerlegen, sodass man immer zum Rand laufen muss und dann der Übergang zum nächsten Bild kommt.
2. Das komplette Bild auf einen Backbuffer zeichnen und diesen per DrawImageRectRect auf den Bildschirm zu zaubern. (je nach größe des Bildes auf dem BB weiß ich nicht ob das ne gute idee ist^^)
mfg
kann Closed werden. (und am besten ab in die Tonne damit :P)
Hab die Lösung schneller gefunden als ich mir zugemutet habe.
(Lösung im Anhang)
mfg
Mars(i)
Moin
Ich möchte innerhalb eines AutoIt Scripts einige Funktionen auslagern die einfach zu lange dauern. (Bin an nem kleinen Spielchen dran :P)
Einfache Funktionen mit einem oder keinem Rückgabewert bekomme ich auch zufriedenstellend auf die Reihe, aber wenn Arrays übergeben werden sollen versagt leider mein anscheinend unzureichendes Wissen über C++^^
Hier mal Meine DLL
Verwendet wird DEV C++
#include <Windows.h>
extern "C" int __declspec(dllexport) __cdecl fakultaet(int a[1500])
{
int i;
long ifakultaet = 1;
for(i=0; i < 10; i++)
{
ifakultaet = ifakultaet * a[i];
}
long addiert = 0;
for(i=0; i < 1500; i++)
{
addiert = addiert + a[i];
}
struct b {
long fak;
long add;
};
struct b c = {ifakultaet, addiert};
return c;
}
Alles anzeigen
Ziel ist es die Fakultät von 1 bis 10 und die addition von 1 bis 1500 in einem Array zurückzugeben, sodass ich beide ergebnisse in AutoIt nutzen kann.
Das ist natürlich nur ein Beispiel, in Echt werden viel komplexere Sachen in der Dll ablaufen^^
Das bringt mir natürlich nix, wenn ich es nicht wieder zurück ins Skript bringen kann...^^
schonmal Danke für alle Verrückten die sich mit sowas auskennen
mfg
Mars(i)
Edit:
Andy.
Man sieht direkt welches Programm auf was Wert legt.
Bei dir wird das Gesicht schön vergrößert... und bei eukalyptus eher die Oberweite.^^
Das mit der Returnfunktion hab ich gesucht. Danke !
Habs jetzt mal so gemacht, dass die IsInRect Funktion 10000 Mal ausgeführt wird. Dann hat man bessere Werte für den Vergleich,
Mit 4x If -> 10.000 Mal = 113 ms => 0.013ms pro Durchlauf.
Die Return Methode 10.000 Mal = 91ms => 0.009ms pro Durchlauf.
die Return Methode braucht nur 70% Der Zeit.
vllt gehts ja noch schneller
Aber Das sollte schonmal Reichen.
Danke
mfg
Mars(i)
Hallo
Ich suche eine Möglichst schnelle IsInRect Funktion.
Hab selbst schon etwas daran gebastelt, aber leider werdens bei mir immer ziemlich viele If Abfragen.
Ich Suche eine Lösung am Besten OHNE If Abfragen.
Wer jetzt kommt: Man kann das alles zusammenfassen und mit And verbinden. Das weiß ich schon. Das ist der Übersicht halber so gemacht.
Variablen sind 2 Arrays.
[0] = X1
[1] = Y1
[2] = Breite1
[3] = Hoehe2
und beim Zweiten genauso.
Es sieht so aus, dass das eine Rechteck wesentlich größer ist als das andere.
Zurzeit hab ich Folgendes
[autoit]Opt('GUIOnEventMode', 1)
Global $hGUI = GUICreate('Test', 600, 600)
GUISetOnEvent(-3, '_Exit')
GUICtrlCreateLabel('', 100, 100, 300, 400)
GUICtrlSetBkColor(-1, 0x555555)
$hLabel = GUICtrlCreateLabel('', 0,0, 20, 40)
GUICtrlSetBkColor(-1, 0xFF5555)
Global $aPos = MouseGetPos()
[/autoit][autoit][/autoit][autoit]Local $Rect1[4] = [100,100,300,400]
Local $Rect2[4] = [$aPos[0],$aPos[1],20,40]
Local $Timer
GUISetState(@SW_SHOW, $hGUI)
[/autoit][autoit][/autoit][autoit]While Sleep(10)
$aPos = GUIGetCursorInfo($hGUI)
GUICtrlSetPos($hLabel, $aPos[0], $aPos[1])
$Rect2[0] = $aPos[0]
$Rect2[1] = $aPos[1]
$Timer = TimerInit()
_IsInRect($Rect1, $Rect2)
ToolTip(TimerDiff($Timer))
$Timer = TimerInit()
WEnd
[/autoit][autoit][/autoit][autoit]Func _IsInRect($R1, $R2)
If $R2[0] + $R2[2] > $R1[0] Then
If $R2[1] + $R2[3] > $R1[1] Then
If $R2[0] < $R1[0] + $R1[2] Then
If $R2[1] < $R1[1] + $R1[3] Then
Return 1
EndIf
EndIf
EndIf
EndIf
EndFunc
Func _Exit()
Exit
EndFunc
Viel Spaß beim Knobeln
Mars(i)
//Edit:. Danke für Jede Minute Mühe die Investiert wurde um das Problem zu Lösen. So Wie es aussieht funktioniert es mit der ReturnVariante2 (die mit den beiden Arrays) am besten. .://
Loooool habt ihr´s gut !!!!
Wir haben erst HTML/CSS (aber nur für VollNoobs) gemacht.
Anschließend haben wir in Java angefangen OHNE IDE irgend eine Scheiße zu proggen
- Ausschließlich konsolenkrams wo man z.B. 2 Zahlen eingeben konnte und dann wurde das ergebnis berechnet.
Jetzt in der 12ten Informatik ist mit BlueJ (ein Java IDE) auch Malz und Hopfen verloren.
Ich mag Java einfach nicht. Egal wie Schmackhaft der Lehrer es machen will.
Man hat keine Exe Dateien, Die Ausführungsgeschwindigkeit hält sich auch in Grenzen (im vergleich zu z.B. C#), es ist total dumm^^ es ist OO.
Es ist wahrscheinlich auch meine Persönliche Antopathie gegen alles Durch und Durch Objekt Orientierte.
Etwas mit Objekten machen ist ne schöne Sache, aber ALLES mit Objekten machen ist meiner Meinung nach schrott.
Mein Lehrer hat mich erstmal Fertig gemacht, wo ich ihm ein AutoIt Prog von mir gezeigt habe: "Es ist NUR eine Skriptsprache. Nix halbes und nix ganzes".
Aber Java.
man man^^
mfg
Mars(i)
Das habe ich auch nicht vor !
Es hat mehr als 5Min Zeit in Anspruch genommen, und ist getestet.
Ich weiß schon, dass mein Verschlüsselungsapparat nicht gut abgeschnitten hat^^
Das heißt aber nicht, dass ich nur Schrott produzieren kann
mfg
Mars(i)
For $i = 1 To 4 Step 1
$iMainPosi[$i] = $iMainPosi[$i+1]
Next
müsste klappen.
mfg
Mars(i)
Man Darf also auch mehrere Verschiedene Controls einsenden ?
Ich habe mein Erstes Jetzt Fertig und habe schon überlegt, ein weiteres anzufangen.
Das ist allerdings etwas umfangreicher und wird vermutlich nicht zu 100% Fertig werden. (ich habe nämlich nicht jeden Tag immer Zeit)
Wenn man mehrere Einsenden Darf schicke ich mein Fertiges ab und schaue mal wie weit ich komme.
Wenn nicht, behalte ich erstmal alles zurück und schaue was ich danach für besser empfinde.
mfg
Mars(i)
Schreib das spiel am Besten von Grund auf neu.
Du solltest dich erstmal mehr mit AutoIt beschäftigen. dann bekommst du es auch gebacken z.b. die Hintergrundfarbe zu ändern.
Schreib am Besten selbst mal kleine Spielchen oder Tools die irgendwas berechnen (obs sinn macht oder nicht^^). Dadurch kann man viel Lernen.
Wenn du Soweit bist kannst du das Spiel ja mal neu auflegen und umfangreicher gestalten.
Mit dem _GDIPlus_GraphicsClear() hab ich auch manchmal Probleme.
Bei mir Läuft alles flüssig mit einer Maximalen CPU Auslastung von 20%.
Wie Sieht es eigentlich mit den Urheberrechten aus ?
Ich würde nämlich schon gerne z.B. als Startbildschirm für irgendein Spiel eine Pixelexplosion nutzen. (Das hat nämlich einen tollen Effekt).
mfg
Mars(i)
Also bei einem Mainboard sollte man nie zu geizig sein mit dem Geld, weil man sonst später kaum noch aufrüstmöglichkeiten hat.
für 65€ bekommt man meiner Meinung nach kein Mainboard was zukunftsfähig ist.
Lieber etwas mehr ausgeben und dafür ein paar mehr slots haben.
Dann kann man später wenn man Lust hat einfach noch ein Paar gig Ram reinhauen, oder ne zweite Graka dazubasteln.
Das ist besser als wenn man ein günstiges Board hat und beim Aufrüsten entweder Teile Austauschen muss, oder gleich eine Neue Hauptplatine besorgen muss.
mfg
Mars(i)
evtl lässt sich das in begrenztem Rahmen 3Dimensional abbilden.
Man erstellt mit hilfe der GDI+ eine 2D Ansicht. (mit Spalte und Zeile)
Für die 3-te Dimension erstellt man jeweils eigene Backbuffers auf diese man dann die 2D Ansicht zeichnet.
Wenn man es jetzt noch schafft diese irgendwie im Raum drehbar zu machen währe das schon hart am Optimum
Vllt reicht ja auch Halbtransparenz dass man sich mit dem Mausrad durch die Dritte Dimension vor und zurück scrollen kann...^^
War nur ein Vorschlag. ich hab nicht behauptet, dass man das Realisieren kann^^
(Aber man weiß ja nie, bei den Pro´s hier drin^^)
mfg
Mars(i)
Soviel zu Geschwindigkeit:
Meins wurde nach 1h abgebrochen xDD
Aber Sicher ist es auch. !!
(Man kann ja auch einen schnelleren PC oder kleinere Texte Verwenden)
mfg
Mars(i)
an _GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 2) hatte ich irgendwie garnicht gedacht...^^
Gut dass du mich daran erinnerst.
Habs mal eingebaut zusammen mit noch ein paar kleinen anderen Änderungen (Heute noch kein Bonus/Malus und sonstiges...)
Das geschwindigkeitssystem hat immer so gehackt, weil ich die Geschwindigkeit teils mit dem Sleep Befehl geregelt habe. (und wenn der vorallem in den niedrigen bereichen von 11 auf 10 springt wirds direkt 10% schneller oder mehr...)
Also hab ichs jetzt mal anderst gemacht: Sleep fest auf 10 und nur die Geschwindigkeit variiert.
Einfach mal anschauen
mfg
Mars(i)