Hi Mars,
deine Version hab ich laufen lassen (darum ja hier kommentiert), Pixel werden aber trotzdem nicht mehr angezeigt.
-> scheinen schon noch da zu sein, nur eben unsichtbar!
Gruß
x0r
Hi Mars,
deine Version hab ich laufen lassen (darum ja hier kommentiert), Pixel werden aber trotzdem nicht mehr angezeigt.
-> scheinen schon noch da zu sein, nur eben unsichtbar!
Gruß
x0r
Nimm mal die version aus dem ersten Post (die 2te, nicht die alte).
Ich konnte den Fehler rekonstruieren, wenn ich das Skript auf "Stop" habe.
Dann wird nicht neu gezeichnet beim Wiederherstellen (kann man aber leicht einbauen).
Ist auch schon geschehen. Teste mal obs jetzt klappt.
Hi Mars,
perfekt!
Schon cool was dabei rauskommt, wenn man offenbar klar strukturierte Wege abläuft
Edit: Siehe Anhang -> nach ca 4.6 mio Frames
Sieht aus wie der Grundriss eines riesigen Tempels
Gruß
x0r
Hi,
wirklich eine coole Spielerei
Mal gucken wie sowas aussieht, wenn man ein 1024x768 Bild davon macht ohne die Pixel selber zu vergrößern.
//Edit
100 Millionen Durchläufe: autoit.de/wcf/attachment/16157/
10 Millionen Durchläufe: autoit.de/wcf/attachment/16158/
5 Millionen Durchläufe: autoit.de/wcf/attachment/16159/
Benutzter Quellcode:
//Made by Sprenger120
//Date: 16.08.2012
#include <iostream>
#include "EasyBMP.h"
#include <random>
#include <time.h>
using namespace std;
bool compareColors(RGBApixel& a,RGBApixel& b) {
if (a.Blue == b.Blue &&
a.Green == b.Green &&
a.Red == b.Red)
{
return true;
}
return false;
}
void rotateDirection(bool fDirection,char& riDirect) { //false = left, true = right
if (fDirection) {
riDirect++;
}else{
riDirect--;
}
if (riDirect > 3) {riDirect = 0;}
if (riDirect < 0) {riDirect = 3;}
}
int main() {
BMP bitmap;
RGBApixel black;
RGBApixel white;
int iWidth = 1024;
int iHeight = 768;
__int64 iRounds = 5000000;
int iCurrentPosX = iWidth/2;
int iCurrentPosY = iHeight/2;
char iDirection = 0;
int iTimestamp = (int)time(NULL);
bitmap.SetSize(iWidth,iHeight);
std::srand(123312);
black.Alpha = black.Blue = black.Green = black.Red = 0;
white.Alpha = white.Blue = white.Green = white.Red = 0xff;
for(__int64 iFinishedRounds = 0;iFinishedRounds<=iRounds;iFinishedRounds++) {
if (iTimestamp != (int)time(NULL)) {
cout<<"\rProgress: "<< ((iFinishedRounds*100) / iRounds) <<"% ";
iTimestamp = (int)time(NULL);
}
switch (iDirection) {
case 0:
iCurrentPosX--;
break;
case 1:
iCurrentPosY--;
break;
case 2:
iCurrentPosX++;
break;
case 3:
iCurrentPosY++;
break;
default:
break;
}
if (iCurrentPosX == iWidth) {iCurrentPosX = 0;}
if (iCurrentPosX < 0) {iCurrentPosX = iWidth-1;}
if (iCurrentPosY == iHeight) {iCurrentPosY = 0;}
if (iCurrentPosY < 0) {iCurrentPosY = iHeight-1;}
if (compareColors(bitmap.GetPixel(iCurrentPosX,iCurrentPosY),white)) { //White
bitmap.SetPixel(iCurrentPosX,iCurrentPosY,black);
rotateDirection(true,iDirection);
continue;
}else{
bitmap.SetPixel(iCurrentPosX,iCurrentPosY,white);
rotateDirection(false,iDirection);
continue;
}
}
bitmap.WriteToFile("test.bmp");
return 0;
}
Alles anzeigen
Die EasyBMP Sourcedateien gibts hier