1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Darter

Beiträge von Darter

  • Zeilenumbruch Fehlt...

    • Darter
    • 28. Mai 2011 um 23:52

    Um es so wie auf dem zweiten Bild darzustellen, reicht es nicht einfach HTML tags in ein Edit cotrol zu schreiben.

    Es gibt nun mehrere möglichkeiten :

    Erstens:
    Du bindest den IE in deine GUI ein.

    Zweitens:
    Du erstellt dir eine eigene Logig, um die HTML tags zu verarbeiten.

    EDIT : Drittens wäre die von name22 genannte Lösung mit einem Richtedit ctrl.

  • Gutes Videobearbeitungsprogramm gesucht (Freeware)

    • Darter
    • 25. Mai 2011 um 23:53

    Hey.

    Ich bin schon seit längerem auf der Suche nach einem Guten Videobearbeitungsprogramm.
    Mit Mirosoft Windows Movie Maker kann und will ich mich nicht anfreunden.

    Das Tool sollte schon eine Timeline besitzen, muss nicht allzuviel Schnickschnack haben.
    Man sollte die Videospur unterteilen können und die Einzellnen Teile mit einer unterschiedlichen Geschwindigkeit versehen können.

    Vllt. kennt ja jemand von euch ein Tool, was die Angeprochenen Aspekte besitzt.

    mfg Darter

  • ListView Doppelklick 64bit

    • Darter
    • 25. Mai 2011 um 22:07

    Was soll wo ein Fehler sein ?
    Wenn man vergisst GUIRegisterMsg() aufzurufen, ist klar dass es nicht funktioniert:

    Aber was du damit meinst :

    Zitat von Raupi


    Probier mal die neue Beta 3.3.7.2, da scheint der Fehler gefixt zu sein. Hab es aber noch nicht getestet.

    verstehe ich nicht. Wie soll ein Fehler in gefixt sein, den es gar nicht gibt ?

  • TCP onlinefähig machen oder ähnliches ;)

    • Darter
    • 14. Mai 2011 um 15:27

    Das ganze Internet basiert auf TCP/IP

  • Grafische Auswertung in Autoit

    • Darter
    • 13. Mai 2011 um 11:18

    Hie mal ein ganz einfaches Bsp.

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hWnd = GUICreate ("Bsp.", 500, 400)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $aTest[10][2] = [[10,5],[12,20],[14,2],[20,3],[24,33],[30,1],[33,4],[40,15],[45,40],[60,1]]

    [/autoit] [autoit][/autoit] [autoit]

    ;Dim $aTest[3][2] = [[0, 0],[10, 10],[20, 0]]

    [/autoit] [autoit][/autoit] [autoit]

    _GraphDraw ($hGraphic, $aTest, 5)

    [/autoit] [autoit][/autoit] [autoit]

    While (GUIGetMsg() <> -3)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func _GraphDraw ($hGraphics, ByRef $aArray, $iScall)
    If UBound($aArray,0) < 2 Then Return SetError(1,"",-1)
    Local $aMax = _GetMax($aArray)
    ConsoleWrite ("!> DEBUG xMax = " & $aMax[0] & ' yMax = ' & $aMax[1] & @CRLF)
    _GDIPlus_GraphicsDrawLine ($hGraphics, 50, ($aMax[1] * $iScall) + 50, ($aMax[0] * $iScall) + 50, ($aMax[1] * $iScall) + 50) ;;=> X
    _GDIPlus_GraphicsDrawLine ($hGraphics, 50, 50, 50, ($aMax[1] * $iScall) + 50) ;;=> Y

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound ($aArray)-1
    _GDIPlus_GraphicsDrawLine ($hGraphics, ($aArray[$i - 1][0] * $iScall) + 50, _
    (($aMax[1] * $iScall) + 50) - $aArray[$i -1][1] * $iScall, _
    ($aArray[$i][0] * $iScall) + 50, _
    (($aMax[1] * $iScall) + 50) - $aArray[$i][1] * $iScall)
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetMax(ByRef $aArray)
    Local $iMaxX, $iMaxY
    For $i = 0 To UBound($aArray,1)-1
    If $iMaxX < $aArray[$i][0] Then $iMaxX = $aArray[$i][0]
    If $iMaxY < $aArray[$i][1] Then $iMaxY = $aArray[$i][1]
    Next
    Local $aRet[2] = [$iMaxX, $iMaxY]
    Return $aRet
    EndFunc

    [/autoit]
  • Per TCP Screenshot anzeigen

    • Darter
    • 12. Mai 2011 um 01:23

    Indemfall hast du das http Protokoll noch nicht richtig verstanden.

    Der Browser schickt an deinen Server ein GET, welches ungefähr so aufgebaut sein wird

    Code
    GET /index.html HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
    Accept: text/html/*;q=0.8,*/*;q=0.5
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive

    Dein Browser werten dann den Quellcode der Index.html aus.

    Da in deinem Quellcode dashier steht:

    Code
    <img src="logo.jpg" " width="800" height="600" />


    Sendet der Browser nun an deinen Server etwas in der Art :

    Code
    GET /logo.jpg HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
    Accept: image/jpq,image/*;q=0.8,*/*;q=0.5
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive

    Jetzt sollte dein Server anhand :

    Code
    Accept:image/jpq,image/*;q=0.8,*/*;q=0.5


    erkennen, dass der Browser ein Bild angefordert hat.
    Danach sollte der Server in dem über :

    Code
    GET /logo.jpg HTTP/1.1


    angegebenen Verzeichniss nach dem Bild suchen, und wenn vorhanden an den Browser schicken

    So wie du es bis jetzt hast ist klar, dass das Bild nicht angezeigt wird, da das Bild nicht an den Browser übertragen wird.

    Hoffe es hat etwas geholfen.

    EDIT: Ich empfehle dir mal Live HTTP Header für den FF zu installieren, dann wird dir das Prinzip vllt etwas klarer.

    mfg Darter

  • Benötige Hilfe um mein Script zu vereinfachen

    • Darter
    • 11. Mai 2011 um 10:32

    Ich würde mir mal array´s anschauen.

  • Wiki über Autoit schreiben?

    • Darter
    • 9. Mai 2011 um 20:28
    Zitat von Mattthias

    Es gibt doch bereits die AutoIt Wiki !
    http://wiki.autoit.de/


    OMG, mal wieder jemand, der nicht alle beiträge durchlesen kann ......

  • GDI+ Image an Klasse übergeben! NUR WIE?

    • Darter
    • 1. Mai 2011 um 13:54

    Hey.

    Ich bin mir jetzt nicht 100% sicher, ob das so richtig ist.
    Hier :

    Code
    Image *hIcon;


    Du Declarierst einen zeiger auf den Datentyp Image, mehr aber auch nicht.
    Du brauchst aber auch ienen Speicherbereich, worauf der Pointer zeigt.


    Also wie gesagt, ich bin mir nicht sicher ob das so richtig ist :

    Code
    class TEST
    {
    private :
    	Image *pIcon ;
    	Image hIcon ;
    public :
    	//konstruktor
    	TEST () 
    	{
    		// Den Pointer auf den speicherbereich von hIcon zeigen lassen.
    		pIcon = &hIcon ;
    	}
    
    
    	void SetImage (Image *pIcon) 
    	{
    		// Die Daten die im Speicherbereich, auf welchen pIcon zeigt,
    		// in hIcon schreiben.
    		hIcon = *pIcon
    	}
    
    
    	Image *GetImage ()
    	{
    		return pIcon ;
    	}
    }
    Alles anzeigen

    EDIT: Ich bin bei meinen Buch C++ von A-Z gerade bei OOP angekommen, ich melde mich heut abend nochmal, wenn ich ein paar Seiten gelesen hab ^^

  • plattformunabhängige Programmiersprachen

    • Darter
    • 27. April 2011 um 23:02

    c++

  • Snake in C++

    • Darter
    • 18. April 2011 um 08:51

    Moin.

    Ich hab mich die letzten tage mal etwas intensiver mit c++ beschäftigt, und da wollte ich gestern gleich mal was brauchbares Code.

    Was dabei rausgkam ist ein kleines Snake, gesteuert wird mit den Pfeiltasten, der rest dürfte klar sein.

    &quot;Main.cpp&quot;
    C
    #include <stdio.h>
    #include <windows.h>
    #include <TCHAR.h>
    #include <time.h>
    #include <string.h>
    #include <math.h>
    #include "Main.h"
    
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    bool AddSnakePeace() ;
    void AddFood() ;
    void DrawMenu (HWND hwnd) ;
    void RestSnake () ;
    void ResetMap () ;
    int TimerInit () ;
    int TimerDiff (int Timestamp) ;
    
    
    const int cxGUI = 400, cyGUI = 400 ;
    const int cxMenu = cxGUI, cyMenu = 100 ;
    const int iMapRaster = 10 ;
    int curren_dir ;
    int fps = 10 ;
    int iScreen ;
    int iLevelUp = 5 ;
    
    
    // The Map
    struct Map
    {
    	// 0 = Free Way, 1 = Wall, 2 Food
    	int		MapArray[cxGUI / iMapRaster][(cyGUI - cyMenu) / iMapRaster] ;
    } 
    MainMap ;
    
    
    // Informations about the player
    struct 
    {
    	int iLevel ;
    	int iScore ;
    	int iSnakeSize ;
    } 
    Player ;
    
    
    //Peaces of the Snake
    #define MAXSNAKEPEACES 100
    struct 
    {
    	int Visible ;
    	int xPos ;
    	int yPos ;
    } 
    Snake[MAXSNAKEPEACES] =
    {
    	1,0,10,	
    };
    
    
    void CreateMap (int iLevel, struct Map MyMap)
    {
    	// DO some mor stuff with the level (create walls and so on)
    	int iUboundX = cxGUI / iMapRaster ;
    	int iUboundY = (cyGUI - cyMenu) / iMapRaster ;
    	int x, y ;
    	for (x = 0 ; x < iUboundX ; x++)
    	{
    		for (y = 0 ; y < iUboundY ; y++)
    		{
    			MyMap.MapArray[x][y] = 0 ;			
    		}
    	}
    }
    
    
    // If Snake Peaces Full, return True, else False
    bool AddSnakePeace()
    {
    	bool bFull = false ;
    	int i ;
    	for (i = 0 ; i < MAXSNAKEPEACES ; i++)
    	{
    		if (Snake[i].Visible == 0)
    		{
    			Player.iSnakeSize =  i + 1 ;
    			Snake[i].Visible = 1 ;
    			Snake[i].xPos = Snake[i-1].xPos ;
    			Snake[i].yPos = Snake[i-1].yPos ;
    			if (Player.iSnakeSize == (Player.iLevel * 10))
    				bFull = true ;
    			// Delete the Pos of the food and add a new food !
    			MainMap.MapArray[Snake[0].xPos][Snake[0].yPos] = 0 ;
    			AddFood() ;
    			break ;
    		}
    	}
    	if (bFull)
    		return true ;
    	else
    		return false ;
    }
    
    
    void AddFood()
    {
    	int iUboundX = cxGUI / iMapRaster ;
    	int iUboundY = (cyGUI - cyMenu) / iMapRaster ;	
    	int iRandX, iRandY ;
    
    
    	while (TRUE)
    	{
    		iRandX = rand () % (iUboundX - 1)  ;
    		iRandY = rand () % (iUboundY - 1)  ;
    		if (MainMap.MapArray[iRandX][iRandY] == 0)
    		{
    			MainMap.MapArray[iRandX][iRandY] = 2 ;
    			break ;
    		}
    	}	
    }
    
    
    void DrawMenu (HWND hwnd)
    {
    	RECT	rect ;
    	TCHAR	szBuffer[100] ;
    	HBRUSH	hbrush = CreateSolidBrush(RGB(80,80,80)) ; 
    	SetRect (&rect, 0, cyGUI - cyMenu, cxGUI, cyGUI) ;
    
    
    	HDC hdc = GetDC (hwnd) ;
    	FillRect (hdc,&rect, hbrush) ;		
    	SetBkMode (hdc, TRANSPARENT) ;
    	SetTextColor (hdc, RGB (255,255,255)) ;
    	_stprintf(szBuffer, _T ("%s%d"), TEXT ("Level: "), Player.iLevel) ;
    	TextOut (hdc,  10, (cyGUI - cyMenu) + 10 , szBuffer, lstrlen (szBuffer)) ;
    	_stprintf(szBuffer, _T ("Snake size (%d/%d)"), Player.iSnakeSize, (Player.iLevel * 10)) ;
    	TextOut (hdc,  100, (cyGUI - cyMenu) + 10 , szBuffer, lstrlen (szBuffer)) ;
    	ReleaseDC (hwnd, hdc) ;
    }
    
    
    void RestSnake ()
    {
    	int i ;
    	for (i = 1 ; i < MAXSNAKEPEACES ; i++)
    	{
    		Snake[i].Visible =	0 ;
    		Snake[i].xPos =		0 ;
    		Snake[i].yPos =		0 ;
    	}
    	Player.iSnakeSize = 1 ;
    
    
    	Snake[0].xPos = ((cxGUI / iMapRaster) / 2) ;
    	Snake[0].yPos = (((cyGUI - cyMenu) / iMapRaster) / 2) ;
    }
    
    
    void ResetMap ()
    {
    	int x, y ;
    	int iUboundX = cxGUI / iMapRaster ;
    	int iUboundY = (cyGUI - cyMenu) / iMapRaster ;	
    	for (x = 0 ; x < iUboundX ; x++)
    	{
    		for (y = 0 ; y < iUboundY ; y++)
    		{
    			MainMap.MapArray[x][y] = 0 ;
    		}
    	}
    }
    
    
    int TimerInit ()
    {
    	clock_t Stamp = clock () ;
    	return (int)Stamp ;
    }
    
    
    int TimerDiff (int Timestamp)
    {
    	clock_t Stamp = clock () ;
    	return (int)((Stamp - Timestamp) / (CLOCKS_PER_SEC / 1000)) ;
    }
    
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {			
    	static TCHAR szAppName[] = TEXT ("Snake By Darter") ;
    	HWND		hwnd ;
    	MSG			msg ;
    	WNDCLASS	wndclass ;
    	TCHAR		szBuffer[100] ;	
    	HBRUSH		hbrush = CreateSolidBrush(RGB(200,200,200)) ; 
    	int			Stamp = TimerInit () ;
    	int x, y, i;
    
    	wndclass.style			= CS_HREDRAW | CS_VREDRAW ;
    	wndclass.lpfnWndProc	= WndProc ;
    	wndclass.cbClsExtra		= 0 ;
    	wndclass.cbWndExtra		= 0 ;
    	wndclass.hInstance		= hInstance ;
    	wndclass.hIcon			= LoadIcon (NULL, IDI_APPLICATION) ;
    	wndclass.hCursor		= LoadCursor (NULL, IDC_ARROW) ;
    	wndclass.hbrBackground	= hbrush ;
    	wndclass.lpszMenuName	= NULL ;
    	wndclass.lpszClassName	= szAppName ;
    
    
    	if (!RegisterClass (&wndclass))
    	{	// Unicode Compilierung kann nur ein fehler sein !
    		MessageBox (NULL, TEXT("Fehler"), szAppName, MB_ICONERROR) ;
    		return 0 ;
    	}
    
    
    	hwnd = CreateWindow (szAppName,													//Name der Fensterklasse
    						TEXT ("Snake By Darter"),									//Fenstertitel
    						WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,	//Styles
    						CW_USEDEFAULT,												//X-Pos
    						CW_USEDEFAULT,												//Y-Pos
    						cxGUI,														//Breite
    						cyGUI,														//Höhe
    						NULL,														//Parent Fenster
    						NULL,														//Menü
    						hInstance,													//Programm-Kopiezähler
    						NULL) ;														//Sonstige Parameter
    
    	ShowWindow (hwnd, iCmdShow) ;
    	UpdateWindow (hwnd) ;
    	// Loop witch alloywed me to to something else !	
    	while (TRUE)
    	{
    		if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
    		{
    			if (msg.message == WM_QUIT)
    				break ;
    			TranslateMessage (&msg) ;
    			DispatchMessage (&msg) ;
    		}
    		else
    		{
    			if (TimerDiff (Stamp) > (1000 / fps) && iScreen == PLAYINGSCREEN)
    			{
    				switch (curren_dir)
    				{
    				case 1:
    					x = 0 ;
    					y = -1 ;
    					break ;
    
    
    				case 2 :
    					x = 1 ;
    					y = 0 ;
    					break;
    
    
    				case 3 :
    					x = 0 ;
    					y = 1 ;
    					break ;
    
    
    				case 4 :
    					x = -1 ;
    					y = 0 ;
    					break ;
    
    
    				}
    				for (i = MAXSNAKEPEACES ; i > 0 ; i--)
    				{
    					Snake[i].xPos = Snake[i-1].xPos ;
    					Snake[i].yPos = Snake[i-1].yPos ;									
    				}
    				Snake[0].xPos = Snake[0].xPos + x ;
    				Snake[0].yPos = Snake[0].yPos + y ;
    				// Check if Head pos == Food Pos
    				if (MainMap.MapArray[Snake[0].xPos][Snake[0].yPos] == 2)
    				{
    					if (AddSnakePeace())
    					{
    						Player.iLevel++ ;
    						fps = fps + (Player.iLevel) ;
    					}
    				}
    				// Check if Head pos <> Map size				
    				if (Snake[0].xPos < 0 || Snake[0].yPos < 0 ||
    					Snake[0].xPos > (cxGUI / iMapRaster -2) || Snake[0].yPos > ((cyGUI - cyMenu) / iMapRaster) -1)
    					iScreen = LOOSESCREEN ;
    				// Check if Head Pos = Body Pos
    				for (i = 2 ; i < MAXSNAKEPEACES ; i++)
    				{
    					if (Snake[i].Visible && Snake[0].xPos == Snake[i].xPos && Snake[0].yPos == Snake[i].yPos)
    					{
    						iScreen = LOOSESCREEN ;
    						break;
    					}									
    				}				
    
    
    				InvalidateRect (hwnd, NULL, TRUE) ;
    				Stamp = TimerInit () ;
    			}
    			Sleep(20) ;
    		}
    	};
    	return msg.wParam ;
    }
    
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	HDC				hdc ;
    	PAINTSTRUCT		ps ;		
    	static int		cxChar, cyChar ;
    	static int		cxClient, cyClient ;	
    	static int		iStartButtonW, iStartButtonH ;	
    	static int		iStartCounter, iShowLevelCounter ;
    	int				i ;	
    	TCHAR			szBuffer[100] ;
    
    
    	switch (message)
    	{
    	case WM_CREATE :
    		int		iDesktW, iDesktH ;
    		RECT	rect ;
    		// Set the Act Screen to Startscreen
    		iScreen = STARTSCREEN ;
    		// Set the start dir witch the snake should go
    		curren_dir = 3 ;
    		iDesktW = GetSystemMetrics(SM_CXSCREEN) ;
    		iDesktH = GetSystemMetrics(SM_CYSCREEN) ;		
    		// Get Char width and height
    		cxChar = LOWORD (GetDialogBaseUnits()) ;
    		cyChar = HIWORD (GetDialogBaseUnits()) ;
    
    
    		iStartButtonW = 20 * cxChar ;
    		iStartButtonH = 7 * cyChar / 4 ;
    
    
    		GetClientRect (hwnd, &rect) ;
    		// Move the WIndow in the Center of the Screen
    		MoveWindow(hwnd, (iDesktW / 2) - (cxGUI / 2), (iDesktH / 2) - (cyGUI / 2), rect.right, rect.bottom, FALSE) ;	
    
    		CreateWindow ( TEXT ("Button"),							// Classenname
    					TEXT ("Start"),								// Beschriftung
    					WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,	// Style
    					(cxGUI / 2) - (iStartButtonW / 2),			// xPos
    					(cyGUI / 2) - (iStartButtonH / 2),			// yPos
    					iStartButtonW,								// Breite
    					iStartButtonH,								// Höhe
    					hwnd,										// Parent
    					(HMENU) BUTTONSTART,						// Ist hier die ID, hat nichts mit einem Menü zu tun !
    					((LPCREATESTRUCT) lParam) -> hInstance, NULL ) ;					
    
    		return 0 ;
    
    
    	case WM_PAINT :
    		RECT	Map, RasterPeace ;
    		HBRUSH	hbrushBG, hbrushMenu ;
    		HBRUSH  hbrushSnake, hbrushWall, hbrushFood ;	
    		HFONT	hFont ;
    		int		iUboundX, iUboundY, x, y ;
    
    
    		hbrushBG = CreateSolidBrush(RGB(200,200,200)) ; 
    		SetRect (&Map, 0, 0, cxGUI, cyGUI - cyMenu) ;
    
    
    		hdc = BeginPaint (hwnd, &ps) ;			
    
    
    		switch (iScreen)
    		{
    		case STARTSCREEN :
    
    			break ;
    
    
    		case PLAYINGSCREEN :	
    			hbrushSnake =	CreateSolidBrush(RGB(10,10,10)) ; 
    			hbrushWall =	CreateSolidBrush(RGB(0,0,0)) ; 
    			hbrushFood =	CreateSolidBrush(RGB(10,200,10)) ; 						
    
    
    			FillRect(hdc, &Map, hbrushBG) ;				
    
    
    			//Draw Walls, Food
    			iUboundX = cxGUI / iMapRaster ;
    			iUboundY = (cyGUI - cyMenu) / iMapRaster ;				
    			for (x = 0 ; x < iUboundX ; x++)
    			{
    				for (y = 0 ; y < iUboundY ; y++)
    				{
    					switch (MainMap.MapArray[x][y])
    					{
    					case 1 : //Wall
    						SetRect(&RasterPeace, (x * iMapRaster), (y * iMapRaster), 
    							(x * iMapRaster) + iMapRaster, (y * iMapRaster) + iMapRaster) ;	
    						FillRect(hdc, &RasterPeace, hbrushWall) ;
    						break;
    
    
    					case 2 : //Food
    						SetRect(&RasterPeace, (x * iMapRaster), (y * iMapRaster), 
    							(x * iMapRaster) + iMapRaster, (y * iMapRaster) + iMapRaster) ;	
    						FillRect(hdc, &RasterPeace, hbrushFood) ;
    						break ;
    
    
    					}
    				}
    			}
    			// Draw Snake
    			for (i = 0 ; i < MAXSNAKEPEACES ; i++)
    			{
    				if (Snake[i].Visible == 1)
    				{
    					SetRect(&RasterPeace, (Snake[i].xPos * iMapRaster), (Snake[i].yPos * iMapRaster), 
    						(Snake[i].xPos * iMapRaster) + iMapRaster, (Snake[i].yPos * iMapRaster) + iMapRaster) ;	
    					FillRect(hdc, &RasterPeace, hbrushSnake) ;
    				}
    			}
    			DrawMenu (hwnd) ;
    			DeleteObject (hbrushSnake) ;
    			DeleteObject (hbrushWall) ;
    			DeleteObject (hbrushFood) ;			
    			break ;
    
    
    		case LOOSESCREEN :		
                hFont = CreateFont(24, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
                    CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, VARIABLE_PITCH, TEXT("Aral"));	
                SelectObject(hdc, hFont) ;
    			SetBkMode (hdc, TRANSPARENT) ;
    			DrawText (hdc, TEXT("Game Over! Press Space to try again!"), -1, &Map, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
    			DrawMenu (hwnd) ;
    			break ;
    
    
    		case STARTCOUNTDOWN :					
    			FillRect(hdc, &Map, hbrushBG) ;
                hFont = CreateFont(24, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
                    CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, VARIABLE_PITCH, TEXT("Aral"));	
                SelectObject(hdc, hFont) ;
    			SetBkMode (hdc, TRANSPARENT) ;
    			SetTextColor (hdc, RGB (255, 0, 0)) ;
    			_stprintf(szBuffer, _T ("%s%d"), TEXT ("Game starts in : "), iStartCounter);
    			DrawText (hdc, szBuffer, -1, &Map, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
    			DrawMenu (hwnd) ;
    			break ;
    
    
    		}
    		EndPaint (hwnd, &ps) ;	
    		DeleteObject (hbrushBG) ;
    		return 0 ;		
    
    
    	case WM_SIZE :
    		return 0 ;
    
    
    	case WM_COMMAND :		
    		switch (wParam)
    		{
    		case BUTTONSTART :			
    			InvalidateRect (hwnd, NULL, TRUE) ;	
    			Player.iLevel = 1 ;
    			iScreen = STARTCOUNTDOWN ;
    			DestroyWindow((HWND)lParam) ;
    			SetTimer(hwnd, TIMER_STARTCOUNT, 1000, NULL) ;
    			iStartCounter = 3;		
    			fps = 10 ;
    			RestSnake () ;
    			break ;
    		}
    		return 0 ;
    	case WM_TIMER :
    		switch (wParam)
    		{
    		case TIMER_STARTCOUNT :
    			iStartCounter-- ;		
    			InvalidateRect (hwnd, NULL, TRUE) ;	
    			if (iStartCounter == 0)
    			{
    				KillTimer(hwnd, TIMER_STARTCOUNT) ;				
    				iScreen = PLAYINGSCREEN ;
    				ResetMap () ;
    				CreateMap (Player.iLevel, MainMap) ;
    				AddFood() ;					
    			}
    			break ;
    
    
    		}
    		return 0 ;
    
    	case WM_KEYDOWN :
    		switch (wParam)
    		{
    		case VK_LEFT :
    			curren_dir = 4 ;
    			break ;
    
    
    		case VK_RIGHT :
    			curren_dir = 2 ;
    			break ;
    
    
    		case VK_UP :
    			curren_dir = 1 ;
    			break ;
    
    
    		case VK_DOWN :
    			curren_dir = 3 ;
    			break ;
    
    
    		case VK_SPACE :
    			if (iScreen == LOOSESCREEN)
    				PostMessage (hwnd, WM_COMMAND, BUTTONSTART, NULL) ;
    			break ;
    
    		}	
    		break ;	
    
    
    	case WM_DESTROY :
    		PostQuitMessage (0) ;
    		return 0 ;
    
    
    	}
    	return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    Alles anzeigen
    &quot;Main.h&quot;
    Code
    #define BUTTONSTART 1
    
    
    #define STARTSCREEN 1
    #define PLAYINGSCREEN 2
    #define LOOSESCREEN 3
    #define STARTCOUNTDOWN 4
    
    
    #define TIMER_STARTCOUNT 1

    Ich wollte eig. den Kompletten VS Projektordner anhängen, leider ist dieser etwas zu groß xD, deshalb nur die Exe in nem Rar verpackt.

    mfg

    Dateien

    Snake.rar 5,77 kB – 644 Downloads
  • Designer gesucht

    • Darter
    • 15. April 2011 um 09:27

    Hey.

    Mir kam letztens eine Idee für eine art Multiplayer Actiongame, leider bin ein schrecklicher Zeichner und werde es warscheinlich auch nie lernen xD
    Nun meine meiner Frage:
    Ich brauchte zu der Idee jemand der mir ein paar zeichungen erstellt, ggf. auch beim Coden hilft, jedoch soll es nicht in Autoit, sondern in C++ gecodet werden.

    mfg

  • Grafik fehler

    • Darter
    • 15. April 2011 um 07:34

    Also ich verstehe nicht was du meinst. Auf dem Screenshot wird alles ganz normal dargestellt.
    Da der Screenshot keine Fehler zeigt und du mienst der Fehler sei so schlimm, dann würde ich mal schätzen, dein Monitor ist im A....

  • Hotkeys funktionieren obwohl Programm im Hintergrund

    • Darter
    • 14. April 2011 um 08:47

    Hey.

    Also ich verstehe dein Problem nicht, und wenn du wirklich GUISetAccelerators benutz, dann lügst du, oder du erklärst dein Problem falsch!
    Wenn das Fenster NICHT den Fokus hat, dann wird auch keine MSG des Typs Command bzw. mit der ID, in meinem Bsp. des Buttons ausgelöst!
    Oder anders gesagt das hier :

    Zitat von Ardor

    ich benutze "leider" Accelerators, weil es dann leichter ist da die Hotkeys ja praktisch den Buttonklick ausführen.


    entspricht nicht der Warheit, denn wenn du Accelerators benutzt, wird die nachricht an die WndProc nur ausgelöst, wenn das Fenster den Fokus hat!

    Hier mien Bsp:

    Spoiler anzeigen
    [autoit]

    $hGUI = GUICreate('Test', 200, 200)
    $iButton = GUICtrlCreateButton('Button', 100, 100)
    Dim $AccelKeys[1][2] = [["^b", $iButton]]
    GUISetAccelerators($AccelKeys)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $iButton
    MsgBox(0, "Push", "You pushed the button")
    EndSwitch
    WEnd

    [/autoit]

    Drück dich einfach mal STRG und "b" wenn das fenster den Fokus hat, und probiers auch mal, wenn das Fenster den Fokus NICHT hat!
    Die MsgBox erscheint nur, wenn das Fenster den Fokus hat

    Ach übrigens funktioniert das ganze auch im OnEventMode :

    Spoiler anzeigen
    [autoit]

    Opt('GUIOnEventMode',1)
    $hGUI = GUICreate('Test', 200, 200)
    $iButton = GUICtrlCreateButton('Button', 100, 100)
    GUICtrlSetOnEvent(-1, '_PushedButton')
    Dim $AccelKeys[1][2] = [["^b", $iButton]]
    GUISetAccelerators($AccelKeys)
    GUISetOnEvent(-3, '_Exit')
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _PushedButton()
    MsgBox(0, "Push", "You pushed the button")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Fettes EDIT: Tut mir leid, lesen sollte man können :) Hab das total falsch verstanden. Indemfall musst du Hotkeys benutzen, diese müssten meiner meinung nach auch funktionieren, wenn das Fenster den Fokus NICHT hat, ansonsten fällt mir nur noch die lösung mit _IsPressed ein.

  • Hotkeys funktionieren obwohl Programm im Hintergrund

    • Darter
    • 13. April 2011 um 22:37
    Zitat von Sprenger120

    Hi,
    wenn du Hotkeys mit HotkeySet zuweist dann sind diese immer aktiv. Benutzt du aber Accelerators dann sind diese nur aktiv wenn das Fenster Fokus hat (glaub ich zumindest).


    Richtig, und hier ein erweitertes bsp. aus dem englischen Forum :
    http://www.autoitscript.com/forum/topic/66…-for-hotkeyset/

  • Pc Neu installieren, was ist alles wichtig

    • Darter
    • 13. April 2011 um 20:54

    Das dürfte bei MS Office auch kein problem sein, solange du an der hardware nichts veränderst(Neuer Prozessor, usw.), ist und bleibt es ja derselbe PC, ich denke besonders Microsoft Andwendungen erkennen dies und werden da sicher keine Probleme bereiten.

  • Pc Neu installieren, was ist alles wichtig

    • Darter
    • 13. April 2011 um 17:36

    auch in den AppData

  • Hardeware emulation

    • Darter
    • 12. April 2011 um 22:13
    Zitat von chip

    So nun haben wir es doch für dem Gameboy. Am 6. Januar 2004 erhilt Nintendo Co., Ltd. das US Patent 6672963 welches festlegt das lediglich Nintendo Co., Ltd. berechtigit ist Gameboy-Emulatoren auf jeglicher Plattform zu entwickeln. Damit ist jegliches Entwickeln eines Emulators ein Patentverstoß.

    http://www.wikipatents.com/US-Patent-6672…rdware-platform


    Ich selber darf mit von jeder musik CD, von jedem Spiel. usw. eine Legale Privatkopie erstellen!
    und was ich mir hier zusammenprogrammiere und nur für mich nutze sehe ich da kein Problem.

  • GDI+ Spiel: AutoIt Arena Fight.

    • Darter
    • 9. April 2011 um 19:02

    Naja konnte ich ja nicht wissen, da ich dein Script nicht kenne und nicht alles zurschauen wollte, wolle ich nur werähnen welches ich habe.

    Naja sei es drum, ich hab die schriftart mal von hat geändert und schon einen Bug festgesellt, und zwar wenn man den Gegner besigt, fliegen immer nich Kugeln rum, trifft mich eine davon werden mir trozdem HP abgezogen, obwohl ja schon die nächste Welle kommt ;)

  • GDI+ Spiel: AutoIt Arena Fight.

    • Darter
    • 9. April 2011 um 18:54

    Hmm,a lso bei mir Win7 64 Bit scheint es wohl einen Fehler zu geben, denn mehr als eine GUI mit dem gesetzten Cursor bekomme ich nicht :(

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™