Wettbewerb: BinTime
-
BF_31 schrieb:
O = leeres Feld
X = grünes Feld_0 _0 _0
_0 00 XX
0X X0 0X
00 00 0XLÖSUNG: 02:20:47
Hi,
du musst das anders rum sehen:00 -> 0
00X0 -> 20X0 -> 2
0000 -> 0X00 -> 4
0XXX -> 7Eigentlich ganz einfach!
MFG
Alexander Sulfrian
@aaaabyx: Exe ist online! http://www.sulfrian.de.vu/download/Project1.exe
-
CrazyOwl schrieb:
2520
Was ist los, will nicht mal einer überbieten ???
PS: Was hältst du eigentlich davon die Trennzeichen auch komplett auslassen zu können, wie ich obens chon geschrieben hab ?
-
Danke für die exe...
-
Dumdidum...
Darf man auch Hilfsmittel benutzen?-----------------------------
!!!Spoiler ------------------#include <iostream> using namespace std; #include <windows.h> void Start(HWND BinTimeWindow); void SendKey(char c); char ReadColumn(HDC BinTimeDC, int ColumnPos); int main() { HWND BinTimeWindow = FindWindow("TForm1", "BinTime Trainer"); if(!BinTimeWindow) { cerr << "Konnte das BinTime-Fenster nicht finden." << endl; return 1; } HWND BinTimeInput = FindWindowEx(BinTimeWindow, NULL, "TEdit", NULL); if(!BinTimeInput) { cerr << "Konnte das Editfeld nicht finden." << endl; return 2; } Start(BinTimeWindow); SetFocus(BinTimeInput); HDC BinTimeDC = GetDC(BinTimeWindow); while(1) { for(int i = 0; i < 6; i++) { int x = 30 + i * 90; SendKey(ReadColumn(BinTimeDC, x)); if((i & 1) && i < 5) SendKey(' '); } SendKey('\n'); if(SendMessage(BinTimeInput, WM_GETTEXTLENGTH, 0, 0) != 0) break; if(GetForegroundWindow() != BinTimeWindow) break; } ReleaseDC(BinTimeWindow, BinTimeDC); return 0; } void Start(HWND BinTimeWindow) { SetForegroundWindow(BinTimeWindow); keybd_event(VK_F9, 0, 0, 0); keybd_event(VK_F9, 0, KEYEVENTF_KEYUP, 0); } void SendKey(char c) { if(c == ' ') c = VK_SPACE; else if(c == '\n') c = VK_RETURN; keybd_event(c, 0, 0, 0); keybd_event(c, 0, KEYEVENTF_KEYUP, 0); } char ReadColumn(HDC BinTimeDC, int ColumnPos) { char Result = 0; for(int i = 0; i < 4; i++) { COLORREF Color = GetPixel(BinTimeDC, ColumnPos, i * 75 + 40); if(((Color & 0xFF00) >> 8) > 128) Result |= 1 << (3 - i); } return Result + '0'; }
Damit komme ich auf so ~unendlich, da dein Programm mit der Countdown-Abfrage nicht mehr nachkommt.
p.s.:
Ich habe dieses Programm geschrieben, weil mir langweilig war. Ich möchte niemanden zwingen, dieses Programm auszuprobieren oder zu akzeptieren.
Dieses Posting soll keine Beleidigung sein.
Ich dachte mir, bevor der Code auf meiner Platte verkümmert, können doch auch andere was davon haben.
-
Du hast gerade das Programm terminiert ;). Wir benötigen ein neues Programm.
MfG SideWinder
-
Ups.
-
Erster Versuch: 370
Zweiter Versuch: 550Das Prog funktioniert glücklicherweise mit wine, sonst hätt ich rebooten und Windows starten müssen.
-
Irgendwas mit 900... Muss noch üben *g*
@cd9000:
Wenn ich in deine Whileschleife noch ein Sleep(1) reinsetze, dann kommt sogar auch BinTime hinterher.
-
SideWinder schrieb:
Du hast gerade das Programm terminiert ;). Wir benötigen ein neues Programm.
Hi,
neue Version online!MFG
Alexander Sulfrian
-
Yeah, so ist super, keine lästigen Trennzeichen mehr.
-
@cd9000:
Ähm, kannst du nochmal son Spoiler schreiben?MFG
Alexander Sulfrian
-
Du musst nur die Methode zum Finden des richtigen Fensters anpassen:
HWND BinTimeWindow = FindWindow("TForm1", NULL); if(!BinTimeWindow) { cerr << "Konnte das BinTime-Fenster nicht finden." << endl; return 1; } char Buffer[100]; SendMessageA(BinTimeWindow, WM_GETTEXT, 100, reinterpret_cast<LPARAM>(Buffer)); strcat(Buffer, Buffer); if(!strstr(Buffer, "BinTime Trainer")) { cerr << "Konnte das BinTime-Fenster nicht finden." << endl; return 2; }