Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Mrówka Langtona


Rekomendowane odpowiedzi

Opublikowano

Mrówka Langtona, czyli "wklej coś własnego, a nie tylko z autoitscripts.com".

 

Napierw trochę pompatycznie:

Mrówka Langdona, czyli poniższy program, jest jednym z argumentów na to, iż hipotetyczna koncepcja Teorii Wszystkiego, może okazać się nic nie warta, z powodu na niemożliwość przewidzenia faktycznych konsekwencji danych procesów w przyrodzie.

Bardzo prosty pomysł -> nasza wyimaginowana mrówka skręca w prawo po wejściu na czarne pole i w lewo po wejściu na pole białe.

Na początku - przez około pierwsze dziesięć tysięcy 'kroków' - chaos!

Powoli z chaosu zaczyna wyłaniać się porządek...

Porządek, którego - mimo już dwudziestoletniej tradycji 'Mrówkowania' - nikt nie był w stanie matematycznie opisać!

Okresowy ruch tworzący swego rodzaju "autostradę" składa się dokładnie z 104 kroków.

 

W całości własny kod, oryginalnie tworzony na konkurs ( to znaczy jako propozycja tematu, ale, że padła również propozycja, żebym sędziował, to chciałem też wiedzieć, co - ewentualnie - bym sędziował. Caly konkurs wyszedł jak wiadomo, czyli jak zawsze :P)

 

Z ciekawszych rzeczy:

- wychodzenie z programu przez odebrania msg'a WM_SYSCOMMAND, poprzez GuiRegisterMsg() [więcej o tym będzie w następnej części Tutorialu o Gui]

- niekonwencjonalne działanie WM_PAINT (zupełnie inne od tego 'teoretycznie poprawnego', przedstawionego w helpie, chociażby w arcie o GuiRegisterMsg()). Poprzez tworzenie 'kopii zapasowej' obrazu w drugiej bitmapie i wysyłanie bitmapy w całości przy WM_PAINT zyskujemy dużo większą szybkość 'biegu' mrówki (eksperymentujcie, szybciej się nie da, w końcu robiłem to jako przykład na ew. konkurs).

 

Jest jeden problem:

Kod nie działa poprawnie, podczas 'kontynuowania pracy'. Mrówka dalej biega, ale zaburza się ciąg. Wciąż wychodzą fajne rzeczy, ale nie tak, jak powinny.

 

Jeśli chcecie trochę zwolnić, odkomentujcie linię Sleep(1) pod koniec głównej pętli -> jedna milisekunda wystarczy.

 

 

#include <GDIPlus.au3>

_GDIPlus_Startup()

Global $bIWannaLeaveThisFuckingCrap = False
Global $aAntArray[401][401]
Global $xPointer, $yPointer, $iVector, $bContinue, $hGraphic, $oWhite, $oBlack, $oRed, $oWhiteBMP, $oBlackBMP, $oRedBMP
Global $hBitmap, $hBitmapGraphicsContext, $hBitmapHandle = False

$hGUI = GUICreate("Langdon's Ant", 802, 802, Default, Default, 0x00880000 )

GUIRegisterMsg(0x0112 , '_WM_SYS_COMMAND') ; 0x0112  WM_SYSCOMMAND
GUIRegisterMsg(0x000F, '_WM_PAINT') ; 0x000F WM_PAINT

$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

$oWhiteBMP = _WinAPI_CreateSolidBitmap($hGUI, 0xFFFFFF, 2, 2)
$oBlackBMP = _WinAPI_CreateSolidBitmap($hGUI, 0x000000, 2, 2)
$oRedBMP = _WinAPI_CreateSolidBitmap($hGUI, 0xFF0000, 2, 2)

$oWhite = _GDIPlus_BitmapCreateFromHBITMAP($oWhiteBMP)
$oBlack = _GDIPlus_BitmapCreateFromHBITMAP($oBlackBMP)
$oRed = _GDIPlus_BitmapCreateFromHBITMAP($oRedBMP)


$bContinue = Int(IniRead('langdonsant.ini', 'Global', 'bContinue', 0))


Switch $bContinue
Case 1
	$hBitmap = _GDIPlus_BitmapCreateFromFile('langdonsant.bmp')

	If Not $hBitmap Then _
		ContinueCase

	$hBitmapGraphicsContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

	Array2DReadFromFile($aAntArray, 'langdonsant.txt')
	$xPointer = IniRead('langdonsant.ini', 'Global', 'xPointer', -1)
	$yPointer = IniRead('langdonsant.ini', 'Global', 'yPointer', -1)
	$iVector = IniRead('langdonsant.ini', 'Global', 'iVector', -1)

	If $xPointer < 0 Or $yPointer < 0 Or $iVector < 0 Then
		_GDIPlus_GraphicsDispose($hBitmapGraphicsContext)
		_GDIPlus_BitmapDispose($hBitmap)
		ContinueCase
	EndIf

Case 0
	$hBitmapHandle = _WinAPI_CreateSolidBitmap($hGUI, 0xFFFFFF, 800, 800)
	$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBitmapHandle)
	$hBitmapGraphicsContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

	$xPointer = 200
	$yPointer = 200
	$iVector = 1

EndSwitch

HotKeySet('{ESC}', '_toggleExit')

GUISetState()

If Not $bContinue Then
_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oRed, $xPointer * 2, $yPointer * 2) ; first ant position
EndIf

_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0) ; update window


; biały - w lewo

; czarny - w prawo


While True

If $bIWannaLeaveThisFuckingCrap Then
	ExitLoop
EndIf

	; na której aktualnie stoi
If $aAntArray[$yPointer][$xPointer] Then ; black
	; idzie w prawo
	$aAntArray[$yPointer][$xPointer] = 0

	_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oWhite, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor
	_GDIPlus_GraphicsDrawImage($hGraphic, $oWhite, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor

	;~
;~		  Vector
;~
;~           1
;~          /1\ 1
;~ 	         |
;~ 	         |
;~ 	         |
;~  4 <------------> 2
;~           |
;~           |
;~           |
;~          \3/ 3
;~           3

	Switch $iVector ; sprawdzić gdzie pójdzie
		Case 1
			If $xPointer = 0 Then
				$xPointer = 400
			Else
				$xPointer-=1 ; regular case
			EndIf
			$iVector = 4
		Case 2
			If $yPointer = 400 Then
				$yPointer = 0
			Else
				$yPointer+=1 ; regular case
			EndIf
			$iVector = 1
		Case 3
			If $xPointer = 400 Then
				$xPointer = 0
			Else
				$xPointer+=1 ; regular case
			EndIf
			$iVector = 2
		Case 4
			If $yPointer = 0 Then
				$yPointer = 400
			Else
				$yPointer-=1 ; regular case
			EndIf
			$iVector = 3
	EndSwitch
Else ; white
	; idzie w lewo
	$aAntArray[$yPointer][$xPointer] = 1

	_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oBlack, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor
	_GDIPlus_GraphicsDrawImage($hGraphic, $oBlack, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor

	Switch $iVector ; sprawdzić gdzie pójdzie
		Case 1
			If $xPointer = 400 Then
				$xPointer = 0
			Else
				$xPointer+=1 ; regular case
			EndIf
			$iVector = 2
		Case 2
			If $yPointer = 0 Then
				$yPointer = 400
			Else
				$yPointer-=1 ; regular case
			EndIf
			$iVector = 3
		Case 3
			If $xPointer = 0 Then
				$xPointer = 400
			Else
				$xPointer-=1 ; regular case
			EndIf
			$iVector = 4
		Case 4
			If $yPointer = 400 Then
				$yPointer = 0
			Else
				$yPointer+=1 ; regular case
			EndIf
			$iVector = 1
	EndSwitch
EndIf

_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oRed, $xPointer * 2, $yPointer * 2)
_GDIPlus_GraphicsDrawImage($hGraphic, $oRed, $xPointer * 2, $yPointer * 2)

; Sleep(1)
WEnd

If MsgBox(4+48, 'Zapis postępu mrówki',	'Czy chciałbyś zapisać aktualną pozycję mrówki i później kontynuować od tego miejsca?' & @CRLF & _
									@CRLF & _
									'Może to zająć kilka sekund!') = 6 Then ; save resources

Array2DSaveToFile($aAntArray, 'langdonsant.txt')
_GDIPlus_ImageSaveToFile($hBitmap, 'langdonsant.bmp')
IniWrite('langdonsant.ini', 'Global', 'bContinue', 1)
IniWrite('langdonsant.ini', 'Global', 'xPointer', $xPointer)
IniWrite('langdonsant.ini', 'Global', 'yPointer', $yPointer)
IniWrite('langdonsant.ini', 'Global', 'iVector', $iVector)

Else
IniWrite('langdonsant.ini', 'Global', 'bContinue', 0)
EndIf

; clean resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBitmapGraphicsContext)
_GDIPlus_BitmapDispose($oWhite)
_GDIPlus_BitmapDispose($oBlack)
_GDIPlus_BitmapDispose($oRed)
_GDIPlus_BitmapDispose($hBitmap)
_WinAPI_DeleteObject($oWhiteBMP)
_WinAPI_DeleteObject($oBlackBMP)
_WinAPI_DeleteObject($oRedBMP)
If $hBitmapHandle Then _WinAPI_DeleteObject($hBitmapHandle)

Exit



;~ ====================================================================================================================================

;~ INTERNAL FUNCTIONS

;~ ====================================================================================================================================

Func _WM_PAINT($hWnd, $iMsg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0) ; update window
EndFunc

Func _WM_SYS_COMMAND($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
	Case $hGUI
		Switch $wParam
			Case 0xF060
				_toggleExit()
		EndSwitch
EndSwitch
EndFunc

Func _toggleExit()
$bIWannaLeaveThisFuckingCrap = True
EndFunc

;~ ====================================================================================================================================

Func Array2DSaveToFile(ByRef $aArray, $sFile, $sDelimeter = Default)
If Not IsArray($aArray) Then Return False
If Not UBound($aArray,0) = 2 Then Return False

If $sDelimeter = Default Then $sDelimeter = Opt("GUIDataSeparatorChar")

Local $hFile = FileOpen($sFile, BitOR(2, 32))	; write, erease previous content, UTF16

Local $iHeight = UBound($aArray, 1), $iWidth = UBound($aArray, 2)

Local $sLine = ''

For $iY = 0 to $iHeight - 1
	For $iX = 0 to $iWidth - 1
		$sLine &= $aArray[$iY][$iX] & $sDelimeter
	Next
	FileWriteLine($hFile, $sLine)
	$sLine = ''
Next

FileClose($hFile)

Return 1
EndFunc

Func Array2DReadFromFile(ByRef $aArray, $sFile, $sDelimeter = Default)
If Not IsArray($aArray) Then Return False
If Not UBound($aArray,0) = 2 Then Return False
If $sDelimeter = Default Then $sDelimeter = Opt("GUIDataSeparatorChar")

Local $hFile = FileOpen($sFile, BitOR(0, 32))	; read
If @error Then Return SetError(1, @error, False)

Local $iHeight = UBound($aArray, 1), $iWidth = UBound($aArray, 2)
Local $sLine = ''

For $iY = 0 to $iHeight - 1
	$sLine = FileReadLine($hFile, $iY + 1)
	If @error Then Return SetError(2, @error, True)

	$sLine = StringSplit($sLine, $sDelimeter)

	If $sLine[0] > $iWidth -1 Then $sLine[0] = $iWidth

	For $iX = 0 to $sLine[0] -1
		$aArray[$iY][$iX] = $sLine[$iX + 1]
	Next

Next

FileClose($hFile)

Return 1
EndFunc

;~ ====================================================================================================================================

 

Ta sygnatura jest pusta.

Opublikowano

walnie mi to ktoś w exeka i podrzuci ? nie mam windowsa na kompie i nie ma jak skompilować do programu

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

A na Linuksie w ogóle autoitowy skrypt pójdzie? Przecież całe GUI jest robione pod windowsa, GDIPlus też jest windowsową biblioteką?

 

http://www.speedyshare.com/files/27274005/Langdons_Ant.exe

Ta sygnatura jest pusta.

Opublikowano

mi działają idealnie , nawet odpalane bezpośrednio w scite programy , z kompilacją coś marnie

w domu mam kompa z instalką Autoita a on niestety dziś sobie padł albo nie ma netu by sie zalogować i brak dostępu

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

zdublowało posty to tu grafike wstawie

a tak mniej więcej wygląda : 1299550276-U150374.jpg

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

AlE Rz@LLl...

n0 \/\/ 3 Ź s13 k00rffa!!111one

Daubyź cosi od Siepie, a n13 znow00 z autoitscript.com... :/ No po prost00 rZ@Ll p33L

 

A tak na serio to fajny kawałek kodu :D Nie mam za bardzo czasu, żeby oblukać, bo zaraz lecę kupić dziewczynom z klasy lizaki, ale wyszło Ci to nawet nawet :D

Oczywiście na konkursie nie miałbyś szans z moją pracą, ale 2. msc-e to zawsze coś, nie? :rolleyes:

 

A propos WM_PAINT. Program robi zrzut ekranu gry i wkleja bit mapę? :) Tak w sumie szybciej, bo jakby miał to zapamiętywać (wszystkie ruchy itd.) to by to trwało wieczność :D

 

#EDIT

Chciałem dać ++, ale mi się limit wyczerpał, bo Fli dostał za azjatki :)

 

#EDIT2

Masz błąd w opisie ;)

Mrówka Langtona, a nie Langdona

Opublikowano
Program robi zrzut ekranu gry i wkleja bit mapę?

 

Nie, tak próbowałem na początku, ale wychodziło wolniej.

 

Program tworzy pustą bitmapę na samym początku (albo wczytuję ją z pliku)

                $hBitmapHandle = _WinAPI_CreateSolidBitmap($hGUI, 0xFFFFFF, 800, 800)
               $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBitmapHandle)
               $hBitmapGraphicsContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

 

I "rysuje kropki" jednocześnie na bitmapie (konkretniej na jej Graphics Context, używając $hBitmapGraphicsContext) oraz na oknie GUI.

 

                _GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oBlack, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor -> na bitmapie "w pamięci"
               _GDIPlus_GraphicsDrawImage($hGraphic, $oBlack, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor -> na oknie GUI, $hGraphic to handle do GraphicsContext GUI 

 

Podczas WM_PAINT (wiadomość wysyłana, kiedy powinno się odświeżyć okno) wkleja bitmapę do GUI.

 

Nie robi zrzutów, tylko rysuje 2x.

Ta sygnatura jest pusta.

Opublikowano

Nie próbowałem. Zakładam, że umiem to zrobić, więc mi się dalej nad tym pracować nie chce :P

 

Natomiast 'pieprzenie się' skryptu po 'wznowieniu' bardzo mnie irytuje i nie mogę znaleźć przyczyny (tym bardziej rozwiązania) tego problemu.

Jakby się komuś chciało nad tym przysiąść i pokazać mi, gdzie robię błąd, to na pewno byłby przeze mnie sowicie wynagrodzony (w mpcforskiej walucie plusów).

Ta sygnatura jest pusta.

Opublikowano

No i wdzięczność za pokazanie błędu.

 

Zacząłem się bawić w multi-mrówki.

 

Zacznijmy od poniższego kawałka kodu (wczesny stan pracy nad wieloma mrówkami, wklejam bo wchodzą w bardzo ciekawą pętlę):

 

 

#include <GDIPlus.au3>

_GDIPlus_Startup()

Global $bIWannaLeaveThisFuckingCrap = False
Global $aAntArray[401][401]
Global $xPointer, $yPointer, $iVector, $bContinue, $hGraphic, $oWhite, $oBlack, $oRed, $oWhiteBMP, $oBlackBMP, $oRedBMP
Global $hBitmap, $hBitmapGraphicsContext, $hBitmapHandle = False

$hGUI = GUICreate("Langdon's Ant", 802, 802, Default, Default, 0x00880000 )

GUIRegisterMsg(0x0112 , '_WM_SYS_COMMAND') ; 0x0112  WM_SYSCOMMAND
GUIRegisterMsg(0x000F, '_WM_PAINT') ; 0x000F WM_PAINT

$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

$oWhiteBMP = _WinAPI_CreateSolidBitmap($hGUI, 0xFFFFFF, 2, 2)
$oBlackBMP = _WinAPI_CreateSolidBitmap($hGUI, 0x000000, 2, 2)
$oRedBMP = _WinAPI_CreateSolidBitmap($hGUI, 0xFF0000, 2, 2)

$oWhite = _GDIPlus_BitmapCreateFromHBITMAP($oWhiteBMP)
$oBlack = _GDIPlus_BitmapCreateFromHBITMAP($oBlackBMP)
$oRed = _GDIPlus_BitmapCreateFromHBITMAP($oRedBMP)

$oGreenBMP = _WinAPI_CreateSolidBitmap($hGUI, 0x00FF00, 2, 2)
$oFuxsiaBMP = _WinAPI_CreateSolidBitmap($hGUI, 0xFF00FF, 2, 2)

$oGreen = _GDIPlus_BitmapCreateFromHBITMAP($oGreenBMP)
$oFuxsia = _GDIPlus_BitmapCreateFromHBITMAP($oFuxsiaBMP)


$bContinue = Int(IniRead('langdonsant.ini', 'Global', 'bContinue', 0))


Switch $bContinue
Case 1
	$hBitmap = _GDIPlus_BitmapCreateFromFile('langdonsant.bmp')

	If Not $hBitmap Then _
		ContinueCase

	$hBitmapGraphicsContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

	Array2DReadFromFile($aAntArray, 'langdonsant.txt')
	$xPointer = IniRead('langdonsant.ini', 'Global', 'xPointer', -1)
	$yPointer = IniRead('langdonsant.ini', 'Global', 'yPointer', -1)
	$iVector = IniRead('langdonsant.ini', 'Global', 'iVector', -1)

	If $xPointer < 0 Or $yPointer < 0 Or $iVector < 0 Then
		_GDIPlus_GraphicsDispose($hBitmapGraphicsContext)
		_GDIPlus_BitmapDispose($hBitmap)
		ContinueCase
	EndIf

Case 0
	$hBitmapHandle = _WinAPI_CreateSolidBitmap($hGUI, 0xFFFFFF, 800, 800)
	$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBitmapHandle)
	$hBitmapGraphicsContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

	$xPointer = 200
	$yPointer = 200
	$iVector = 1

	$xPointer_sec = 221
	$yPointer_sec = 181
	$iVector_sec = 2

EndSwitch

HotKeySet('{ESC}', '_toggleExit')

GUISetState()

If Not $bContinue Then
_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oRed, $xPointer * 2, $yPointer * 2) ; first ant position
EndIf

_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0) ; update window


; biały - w lewo

; czarny - w prawo


While True

;If $bIWannaLeaveThisFuckingCrap Then
;	ExitLoop
;EndIf

	; na której aktualnie stoi
If $aAntArray[$yPointer][$xPointer] Then ; black
	; idzie w prawo
	$aAntArray[$yPointer][$xPointer] = 0

	_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oWhite, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor
	_GDIPlus_GraphicsDrawImage($hGraphic, $oWhite, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor

	;~
;~		  Vector
;~
;~           1
;~          /1\ 1
;~ 	         |
;~ 	         |
;~ 	         |
;~  4 <------------> 2
;~           |
;~           |
;~           |
;~          \3/ 3
;~           3

	Switch $iVector ; sprawdzić gdzie pójdzie
		Case 1
			If $xPointer = 0 Then
				$xPointer = 400
			Else
				$xPointer-=1 ; regular case
			EndIf
			$iVector = 4
		Case 2
			If $yPointer = 400 Then
				$yPointer = 0
			Else
				$yPointer+=1 ; regular case
			EndIf
			$iVector = 1
		Case 3
			If $xPointer = 400 Then
				$xPointer = 0
			Else
				$xPointer+=1 ; regular case
			EndIf
			$iVector = 2
		Case 4
			If $yPointer = 0 Then
				$yPointer = 400
			Else
				$yPointer-=1 ; regular case
			EndIf
			$iVector = 3
	EndSwitch
Else ; white
	; idzie w lewo
	$aAntArray[$yPointer][$xPointer] = 1

	_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oBlack, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor
	_GDIPlus_GraphicsDrawImage($hGraphic, $oBlack, $xPointer * 2, $yPointer * 2) ; koloruje to na którym stoi na przeciwny kolor

	Switch $iVector ; sprawdzić gdzie pójdzie
		Case 1
			If $xPointer = 400 Then
				$xPointer = 0
			Else
				$xPointer+=1 ; regular case
			EndIf
			$iVector = 2
		Case 2
			If $yPointer = 0 Then
				$yPointer = 400
			Else
				$yPointer-=1 ; regular case
			EndIf
			$iVector = 3
		Case 3
			If $xPointer = 0 Then
				$xPointer = 400
			Else
				$xPointer-=1 ; regular case
			EndIf
			$iVector = 4
		Case 4
			If $yPointer = 400 Then
				$yPointer = 0
			Else
				$yPointer+=1 ; regular case
			EndIf
			$iVector = 1
	EndSwitch
EndIf

_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oRed, $xPointer * 2, $yPointer * 2)
_GDIPlus_GraphicsDrawImage($hGraphic, $oRed, $xPointer * 2, $yPointer * 2)

; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
; 			  SECOND ANT
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

If $aAntArray[$yPointer_sec][$xPointer_sec] Then ; black
	; idzie w prawo
	$aAntArray[$yPointer_sec][$xPointer_sec] = 0

	_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oWhite, $xPointer_sec * 2, $yPointer_sec * 2) ; koloruje to na którym stoi na przeciwny kolor
	_GDIPlus_GraphicsDrawImage($hGraphic, $oWhite, $xPointer_sec * 2, $yPointer_sec * 2) ; koloruje to na którym stoi na przeciwny kolor

	;~
;~		  Vector
;~
;~           1
;~          /1\ 1
;~ 	         |
;~ 	         |
;~ 	         |
;~  4 <------------> 2
;~           |
;~           |
;~           |
;~          \3/ 3
;~           3

	Switch $iVector_sec ; sprawdzić gdzie pójdzie
		Case 1
			If $xPointer_sec = 0 Then
				$xPointer_sec = 400
			Else
				$xPointer_sec-=1 ; regular case
			EndIf
			$iVector_sec = 4
		Case 2
			If $yPointer_sec = 400 Then
				$yPointer_sec = 0
			Else
				$yPointer_sec+=1 ; regular case
			EndIf
			$iVector_sec = 1
		Case 3
			If $xPointer_sec = 400 Then
				$xPointer_sec = 0
			Else
				$xPointer_sec+=1 ; regular case
			EndIf
			$iVector_sec = 2
		Case 4
			If $yPointer_sec = 0 Then
				$yPointer_sec = 400
			Else
				$yPointer_sec-=1 ; regular case
			EndIf
			$iVector_sec = 3
	EndSwitch
Else ; white
	; idzie w lewo
	$aAntArray[$yPointer_sec][$xPointer_sec] = 1

	_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oFuxsia, $xPointer_sec * 2, $yPointer_sec * 2) ; koloruje to na którym stoi na przeciwny kolor
	_GDIPlus_GraphicsDrawImage($hGraphic, $oFuxsia, $xPointer_sec * 2, $yPointer_sec * 2) ; koloruje to na którym stoi na przeciwny kolor

	Switch $iVector_sec ; sprawdzić gdzie pójdzie
		Case 1
			If $xPointer_sec = 400 Then
				$xPointer_sec = 0
			Else
				$xPointer_sec+=1 ; regular case
			EndIf
			$iVector_sec = 2
		Case 2
			If $yPointer_sec = 0 Then
				$yPointer_sec = 400
			Else
				$yPointer_sec-=1 ; regular case
			EndIf
			$iVector_sec = 3
		Case 3
			If $xPointer_sec = 0 Then
				$xPointer_sec = 400
			Else
				$xPointer_sec-=1 ; regular case
			EndIf
			$iVector_sec = 4
		Case 4
			If $yPointer_sec = 400 Then
				$yPointer_sec = 0
			Else
				$yPointer_sec+=1 ; regular case
			EndIf
			$iVector_sec = 1
	EndSwitch
EndIf

_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oRed, $xPointer_sec * 2, $yPointer_sec * 2)
_GDIPlus_GraphicsDrawImage($hGraphic, $oRed, $xPointer_sec * 2, $yPointer_sec * 2)

; sleep(1)
WEnd

If MsgBox(4+48, 'Zapis postępu mrówki',	'Czy chciałbyś zapisać aktualną pozycję mrówki i później kontynuować od tego miejsca?' & @CRLF & _
									@CRLF & _
									'Może to zająć kilka sekund!') = 6 Then ; save resources

Array2DSaveToFile($aAntArray, 'langdonsant.txt')
_GDIPlus_ImageSaveToFile($hBitmap, 'langdonsant.bmp')
IniWrite('langdonsant.ini', 'Global', 'bContinue', 1)
IniWrite('langdonsant.ini', 'Global', 'xPointer', $xPointer)
IniWrite('langdonsant.ini', 'Global', 'yPointer', $yPointer)
IniWrite('langdonsant.ini', 'Global', 'iVector', $iVector)

Else
IniWrite('langdonsant.ini', 'Global', 'bContinue', 0)
EndIf

; clean resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBitmapGraphicsContext)
_GDIPlus_BitmapDispose($oWhite)
_GDIPlus_BitmapDispose($oBlack)
_GDIPlus_BitmapDispose($oRed)
_GDIPlus_BitmapDispose($hBitmap)
_WinAPI_DeleteObject($oWhiteBMP)
_WinAPI_DeleteObject($oBlackBMP)
_WinAPI_DeleteObject($oRedBMP)
If $hBitmapHandle Then _WinAPI_DeleteObject($hBitmapHandle)

Exit



;~ ====================================================================================================================================

;~ INTERNAL FUNCTIONS

;~ ====================================================================================================================================

Func _WM_PAINT($hWnd, $iMsg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0) ; update window
EndFunc

Func _WM_SYS_COMMAND($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
	Case $hGUI
		Switch $wParam
			Case 0xF060
				_toggleExit()
		EndSwitch
EndSwitch
EndFunc

Func _toggleExit()
$bIWannaLeaveThisFuckingCrap = True
EndFunc

;~ ====================================================================================================================================

Func Array2DSaveToFile(ByRef $aArray, $sFile, $sDelimeter = Default)
If Not IsArray($aArray) Then Return False
If Not UBound($aArray,0) = 2 Then Return False

If $sDelimeter = Default Then $sDelimeter = Opt("GUIDataSeparatorChar")

Local $hFile = FileOpen($sFile, BitOR(2, 32))	; write, erease previous content, UTF16

Local $iHeight = UBound($aArray, 1), $iWidth = UBound($aArray, 2)

Local $sLine = ''

For $iY = 0 to $iHeight - 1
	For $iX = 0 to $iWidth - 1
		$sLine &= $aArray[$iY][$iX] & $sDelimeter
	Next
	FileWriteLine($hFile, $sLine)
	$sLine = ''
Next

FileClose($hFile)

Return 1
EndFunc

Func Array2DReadFromFile(ByRef $aArray, $sFile, $sDelimeter = Default)
If Not IsArray($aArray) Then Return False
If Not UBound($aArray,0) = 2 Then Return False
If $sDelimeter = Default Then $sDelimeter = Opt("GUIDataSeparatorChar")

Local $hFile = FileOpen($sFile, BitOR(0, 32))	; read
If @error Then Return SetError(1, @error, False)

Local $iHeight = UBound($aArray, 1), $iWidth = UBound($aArray, 2)
Local $sLine = ''

For $iY = 0 to $iHeight - 1
	$sLine = FileReadLine($hFile, $iY + 1)
	If @error Then Return SetError(2, @error, True)

	$sLine = StringSplit($sLine, $sDelimeter)

	If $sLine[0] > $iWidth -1 Then $sLine[0] = $iWidth

	For $iX = 0 to $sLine[0] -1
		$aArray[$iY][$iX] = $sLine[$iX + 1]
	Next

Next

FileClose($hFile)

Return 1
EndFunc

;~ ====================================================================================================================================

 

 

A poniżej już w pełni gotowy skrypt do dowolnej ilości mrówek (Randomowe uzupełnianie informacji o nich [startowa pozycja, wektor i kolor] działa tylko dla <= 16). Jeśli chcielibyście dalej się tym bawić, zmieniajcie ręcznie fragment:

 

 

		$iLiczbaMrowek = 3

	Global $a_X_Pointers[$iLiczbaMrowek] = [ 200 ,	221,	251]
	Global $a_Y_Pointers[$iLiczbaMrowek] = [ 200 ,	181, 	251	]
	Global $a_Vectors[$iLiczbaMrowek] = 	[  1  ,	 2, 	 1	]

	Global $aKoloryMrowek[$iLiczbaMrowek] = [0x000000, 0x00FF00, 0x00FFFF]


; ====================================================================
		$___CZY_UZUPELNIC_LOSOWYMI_DANYMI____ = FALSE
; ====================================================================

 

 

Poniżej mrówkogeddon dla 15 zbitych w ciasną grupkę mrówek:

 

 

#include <GDIPlus.au3>
#include <Array.au3>


_GDIPlus_Startup()

Global $bIWannaLeaveThisFuckingCrap = False
Global $aAntArray[401][401]
Global $xPointer, $yPointer, $iVector, $bContinue, $hGraphic, $oWhite, $oBlack, $oRed, $oWhiteBMP, $oBlackBMP, $oRedBMP
Global $hBitmap, $hBitmapGraphicsContext, $hBitmapHandle = False

$hGUI = GUICreate("Langdon's Ant", 802, 802, Default, Default, 0x00880000 )

GUIRegisterMsg(0x0112 , '_WM_SYS_COMMAND') ; 0x0112  WM_SYSCOMMAND
GUIRegisterMsg(0x000F, '_WM_PAINT') ; 0x000F WM_PAINT

$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

$bContinue = Int(IniRead('langdonsant.ini', 'Global', 'bContinue', 0))
$bContinue = 0

Switch $bContinue
Case 1
	$hBitmap = _GDIPlus_BitmapCreateFromFile('langdonsant.bmp')

	If Not $hBitmap Then _
		ContinueCase

	$hBitmapGraphicsContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

	Array2DReadFromFile($aAntArray, 'langdonsant.txt')
	$xPointer = IniRead('langdonsant.ini', 'Global', 'xPointer', -1)
	$yPointer = IniRead('langdonsant.ini', 'Global', 'yPointer', -1)
	$iVector = IniRead('langdonsant.ini', 'Global', 'iVector', -1)

	If $xPointer < 0 Or $yPointer < 0 Or $iVector < 0 Then
		_GDIPlus_GraphicsDispose($hBitmapGraphicsContext)
		_GDIPlus_BitmapDispose($hBitmap)
		ContinueCase
	EndIf

Case 0
	$hBitmapHandle = _WinAPI_CreateSolidBitmap($hGUI, 0xFFFFFF, 800, 800)
	$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBitmapHandle)
	$hBitmapGraphicsContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

	$iLiczbaMrowek = 15

	Global $a_X_Pointers[$iLiczbaMrowek] ; = [ 200 ,	221,	251]
	Global $a_Y_Pointers[$iLiczbaMrowek] ; = [ 200 ,	181, 	251	]
	Global $a_Vectors[$iLiczbaMrowek] ; = 	[  1  ,	 2, 	 1	]

	Global $aKoloryMrowek[$iLiczbaMrowek] ; = [0x000000, 0x00FF00, 0x00FFFF]


; ====================================================================
		$___CZY_UZUPELNIC_LOSOWYMI_DANYMI____ = TRUE
; ====================================================================
	If $___CZY_UZUPELNIC_LOSOWYMI_DANYMI____ Then
		If $iLiczbaMrowek > 16 Then Exit MsgBox(16, 'Wal się!', 'Sam sobie dobieraj wyraziste kolory dla więcej niż 16 mrówek!')
		For $iArray = 0 to $iLiczbaMrowek -1
			$a_X_Pointers[$iArray] = Random(150, 250, 1)
			$a_Y_Pointers[$iArray] = Random(150, 250, 1)
			$a_Vectors[$iArray] = Random(1, 4, 1)
			; dobieranie wyrazistych kolorów
			Do
				Global $iColor, $iPieces = 6, $iRed = Random(0, 3, 1), $iGreen = Random(0, 3, 1)
				$iPieces -= ($iRed + $iGreen)
				If $iPieces > 3 Then $iPieces = 3
				$iBlue = $iPieces
				$iColor = BitShift($iRed * 0x55, -16) + BitShift($iGreen * 0x55, -8) + $iBlue * 0x55
			Until _ArraySearch($aKoloryMrowek, $iColor) = -1
			$aKoloryMrowek[$iArray] = $iColor
			; <-- end of
		Next
	EndIf
; ====================================================================
;				$___CZY_UZUPELNIC_LOSOWYMI_DANYMI____
; ====================================================================



EndSwitch

Global $aColorBMPs[$iLiczbaMrowek]

Global $oColors[$iLiczbaMrowek]

For $iArray = 0 to $iLiczbaMrowek - 1
$aColorBMPs[$iArray] = _WinAPI_CreateSolidBitmap($hGUI, $aKoloryMrowek[$iArray], 2, 2)
$oColors[$iArray] = _GDIPlus_BitmapCreateFromHBITMAP($aColorBMPs[$iArray])
Next

$oWhiteBMP = _WinAPI_CreateSolidBitmap($hGUI, 0xFFFFFF, 2, 2)
$oWhite = _GDIPlus_BitmapCreateFromHBITMAP($oWhiteBMP)

HotKeySet('{ESC}', '_toggleExit')

GUISetState()

If Not $bContinue Then
_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oRed, $xPointer * 2, $yPointer * 2) ; first ant position
EndIf

_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0) ; update window




While True

For $iArray = 0 to $iLiczbaMrowek - 1

	If $aAntArray[$a_Y_Pointers[$iArray]][$a_X_Pointers[$iArray]] Then ; black
		; idzie w prawo
		$aAntArray[$a_Y_Pointers[$iArray]][$a_X_Pointers[$iArray]] = 0

		_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oWhite, $a_X_Pointers[$iArray] * 2, $a_Y_Pointers[$iArray] * 2) ; koloruje to na którym stoi na przeciwny kolor
		_GDIPlus_GraphicsDrawImage($hGraphic, $oWhite, $a_X_Pointers[$iArray] * 2, $a_Y_Pointers[$iArray] * 2) ; koloruje to na którym stoi na przeciwny kolor

		;~
;~		  Vector
;~
;~           1
;~          /1\ 1
;~ 	         |
;~ 	         |
;~ 	         |
;~  4 <------------> 2
;~           |
;~           |
;~           |
;~          \3/ 3
;~           3

		Switch $a_Vectors[$iArray] ; sprawdzić gdzie pójdzie
			Case 1
				If $a_X_Pointers[$iArray] = 0 Then
					$a_X_Pointers[$iArray] = 400
				Else
					$a_X_Pointers[$iArray]-=1 ; regular case
				EndIf
				$a_Vectors[$iArray] = 4
			Case 2
				If $a_Y_Pointers[$iArray] = 400 Then
					$a_Y_Pointers[$iArray] = 0
				Else
					$a_Y_Pointers[$iArray]+=1 ; regular case
				EndIf
				$a_Vectors[$iArray] = 1
			Case 3
				If $a_X_Pointers[$iArray] = 400 Then
					$a_X_Pointers[$iArray] = 0
				Else
					$a_X_Pointers[$iArray]+=1 ; regular case
				EndIf
				$a_Vectors[$iArray] = 2
			Case 4
				If $a_Y_Pointers[$iArray] = 0 Then
					$a_Y_Pointers[$iArray] = 400
				Else
					$a_Y_Pointers[$iArray]-=1 ; regular case
				EndIf
				$a_Vectors[$iArray] = 3
		EndSwitch
	Else ; white
		; idzie w lewo
		$aAntArray[$a_Y_Pointers[$iArray]][$a_X_Pointers[$iArray]] = 1

		_GDIPlus_GraphicsDrawImage($hBitmapGraphicsContext, $oColors[$iArray], $a_X_Pointers[$iArray] * 2, $a_Y_Pointers[$iArray] * 2) ; koloruje to na którym stoi na przeciwny kolor
		_GDIPlus_GraphicsDrawImage($hGraphic, $oColors[$iArray], $a_X_Pointers[$iArray] * 2, $a_Y_Pointers[$iArray] * 2) ; koloruje to na którym stoi na przeciwny kolor

		Switch $a_Vectors[$iArray] ; sprawdzić gdzie pójdzie
			Case 1
				If $a_X_Pointers[$iArray] = 400 Then
					$a_X_Pointers[$iArray] = 0
				Else
					$a_X_Pointers[$iArray]+=1 ; regular case
				EndIf
				$a_Vectors[$iArray] = 2
			Case 2
				If $a_Y_Pointers[$iArray] = 0 Then
					$a_Y_Pointers[$iArray] = 400
				Else
					$a_Y_Pointers[$iArray]-=1 ; regular case
				EndIf
				$a_Vectors[$iArray] = 3
			Case 3
				If $a_X_Pointers[$iArray] = 0 Then
					$a_X_Pointers[$iArray] = 400
				Else
					$a_X_Pointers[$iArray]-=1 ; regular case
				EndIf
				$a_Vectors[$iArray] = 4
			Case 4
				If $a_Y_Pointers[$iArray] = 400 Then
					$a_Y_Pointers[$iArray] = 0
				Else
					$a_Y_Pointers[$iArray]+=1 ; regular case
				EndIf
				$a_Vectors[$iArray] = 1
		EndSwitch
	EndIf

Next

WEnd

;~ If MsgBox(4+48, 'Zapis postępu mrówki',	'Czy chciałbyś zapisać aktualną pozycję mrówki i później kontynuować od tego miejsca?' & @CRLF & _
;~ 										@CRLF & _
;~ 										'Może to zająć kilka sekund!') = 6 Then ; save resources

;~ 	Array2DSaveToFile($aAntArray, 'langdonsant.txt')
;~ 	_GDIPlus_ImageSaveToFile($hBitmap, 'langdonsant.bmp')
;~ 	IniWrite('langdonsant.ini', 'Global', 'bContinue', 1)
;~ 	IniWrite('langdonsant.ini', 'Global', 'xPointer', $xPointer)
;~ 	IniWrite('langdonsant.ini', 'Global', 'yPointer', $yPointer)
;~ 	IniWrite('langdonsant.ini', 'Global', 'iVector', $iVector)

;~ Else
;~ 	IniWrite('langdonsant.ini', 'Global', 'bContinue', 0)
;~ EndIf
;




; ====================================================================
; 							CLEAN RESOURCES
; ====================================================================

_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBitmapGraphicsContext)


For $iArray = 0 to $iLiczbaMrowek
_GDIPlus_BitmapDispose($oColors[$iArray])
_WinAPI_DeleteObject($aColorBMPs[$iArray])
Next

_GDIPlus_BitmapDispose($oWhite)
_WinAPI_DeleteObject($oWhiteBMP)

If $hBitmapHandle Then _WinAPI_DeleteObject($hBitmapHandle)
_GDIPlus_Shutdown()

; ====================================================================
; ====================================================================




Exit





;~ ====================================================================================================================================

;~ INTERNAL FUNCTIONS

;~ ====================================================================================================================================

Func _WM_PAINT($hWnd, $iMsg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0) ; update window
EndFunc

Func _WM_SYS_COMMAND($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
	Case $hGUI
		Switch $wParam
			Case 0xF060
				_toggleExit()
		EndSwitch
EndSwitch
EndFunc

Func _toggleExit()
$bIWannaLeaveThisFuckingCrap = True
EndFunc

;~ ====================================================================================================================================

Func Array2DSaveToFile(ByRef $aArray, $sFile, $sDelimeter = Default)
If Not IsArray($aArray) Then Return False
If Not UBound($aArray,0) = 2 Then Return False

If $sDelimeter = Default Then $sDelimeter = Opt("GUIDataSeparatorChar")

Local $hFile = FileOpen($sFile, BitOR(2, 32))	; write, erease previous content, UTF16

Local $iHeight = UBound($aArray, 1), $iWidth = UBound($aArray, 2)

Local $sLine = ''

For $iY = 0 to $iHeight - 1
	For $iX = 0 to $iWidth - 1
		$sLine &= $aArray[$iY][$iX] & $sDelimeter
	Next
	FileWriteLine($hFile, $sLine)
	$sLine = ''
Next

FileClose($hFile)

Return 1
EndFunc

Func Array2DReadFromFile(ByRef $aArray, $sFile, $sDelimeter = Default)
If Not IsArray($aArray) Then Return False
If Not UBound($aArray,0) = 2 Then Return False
If $sDelimeter = Default Then $sDelimeter = Opt("GUIDataSeparatorChar")

Local $hFile = FileOpen($sFile, BitOR(0, 32))	; read
If @error Then Return SetError(1, @error, False)

Local $iHeight = UBound($aArray, 1), $iWidth = UBound($aArray, 2)
Local $sLine = ''

For $iY = 0 to $iHeight - 1
	$sLine = FileReadLine($hFile, $iY + 1)
	If @error Then Return SetError(2, @error, True)

	$sLine = StringSplit($sLine, $sDelimeter)

	If $sLine[0] > $iWidth -1 Then $sLine[0] = $iWidth

	For $iX = 0 to $sLine[0] -1
		$aArray[$iY][$iX] = $sLine[$iX + 1]
	Next

Next

FileClose($hFile)

Return 1
EndFunc

;~ ====================================================================================================================================

 

 

Prawda, że piękne? ^^

Ta sygnatura jest pusta.

Opublikowano

Heh :)

To z 15 zajebiste :P

Szkoda tylko że się blokują wszystkie w środku i tylko 2 chyba wyjeżdżają poza 'wielką kolorową bezkształtną masę' :P

 

Jutro dam plusiki, bo dzisiaj limit :/

Opublikowano

4ggr35510n jednak działa jak należy AutoIt pod Linuxem , wystarczyło zainstalowac w windows , a potem tylko pod linuxem odpalić w wine bez żadnych konfiguracji

 

mam wrażenie że z bibliotekami linuxa znacznie ciekawiej prezentują się wyglądy programów i gui niż pod windows :)

 

1299611570-U150374.png

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Prawie jak mapa strategiczna z Plemion...

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano
Szkoda tylko że się blokują wszystkie w środku i tylko 2 chyba wyjeżdżają poza 'wielką kolorową bezkształtną masę'

 

Zależy jak ci się Random() wylosuje :]

 

- - - -

 

Plusy są oczywiście doceniane :)

 

- - - -

 

Prawie jak mapa strategiczna z Plemion...

 

Rozumiem, że jednak wziąłeś się za tego do plemion bota? :}

 

- - - -

 

Dzięki za screena robem.

Ta sygnatura jest pusta.

Opublikowano

Rozumiem, że jednak wziąłeś się za tego do plemion bota? :}

 

Nie!

Po prostu przypominają mi się stare dobre batalie z s10, kiedy to (mając najlepsze konto w mojej karierze - 600 wiosek z hakiem :D ) walczyło ze sobą kilka plemion na raz i z KP mapka wyglądała podobnie do centrum GUI z ssa robem :)

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano

włacz i poczekaj 24 h to dopiero zobaczysz jak fajnie wygląda ;)

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

U mnie mrówki "się resetują" co kilka minut :/

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano
To żyje!
U mnie te mrówki stworzyły drabinę społeczną i złożone stosunki między sobą. Żółta zawsze rozpierdziela to co zrobiła niebieska itp. Wyłączę to bo zaraz zaczną domagać się zmiany tapety na jakąś z krzyżem.

roomy.png

Wczoraj do ciebie nie należy. Jutro niepewne... Tylko dziś jest twoje.

Opublikowano
U mnie mrówki "się resetują" co kilka minut :/

 

Zależy jak ci random wylosuje.

 

Ustawiaj ręcznie:

- nieparzystą liczbę mrówek

- w odległościach od siebie będącymi liczbami pierwszymi

 

To nie będą się wzajemnie "czyścić".

 

U mnie te mrówki stworzyły drabinę społeczną i złożone stosunki między sobą. Żółta zawsze rozpierdziela to co zrobiła niebieska itp. Wyłączę to bo zaraz zaczną domagać się zmiany tapety na jakąś z krzyżem.

 

Hah xD

Ta sygnatura jest pusta.

  • 3 tygodnie później...
Opublikowano

Nie rozumiem jaki chaos

 

Przy pierwszym skrypcie u mnie mrówka zawsze wykonuje te same ruchy.

 

 

Więc, teoretycznie znając punkt rozpoczęcia, jesteśmy w stanie określić punkt zatrzymania po określonej liczbie ruchów.

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

Bardzo fajny program przypomina mi render mapki z Minecraft'a z lotu ptaka. Jak rysuje mi ta mrówka to jak ruszę myszką to wszystko tak jakby znika muszę po prostu nie ruszać myszką aby widzieć co narysowała. Masz +

GrottyCracker22.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...