<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Goldspeak Community - Arduino i inne]]></title>
		<link>https://forum.goldspeak.pl/</link>
		<description><![CDATA[Goldspeak Community - https://forum.goldspeak.pl]]></description>
		<pubDate>Wed, 22 Apr 2026 00:14:22 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[IMG to ASCII w c++ i sfml]]></title>
			<link>https://forum.goldspeak.pl/showthread.php?tid=940</link>
			<pubDate>Thu, 25 Jan 2018 17:09:30 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.goldspeak.pl/member.php?action=profile&uid=170">Czpal</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.goldspeak.pl/showthread.php?tid=940</guid>
			<description><![CDATA[Prosty program, który zamienia obrazki na litery.<br />
<br />
Przykład:<br />
przed<br />
<img src="https://i.imgur.com/2GrowjQ.jpg" loading="lazy"  alt="[Image: 2GrowjQ.jpg]" class="mycode_img" /><br />
po<br />
<img src="https://i.imgur.com/T4M57fC.png" loading="lazy"  alt="[Image: T4M57fC.png]" class="mycode_img" /><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#include &lt;SFML&#92;Graphics.hpp&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;fstream&gt;<br />
<br />
<br />
class Converter<br />
{<br />
public:<br />
&nbsp;&nbsp;&nbsp;&nbsp;Converter(int width, bool reverse) :width(width), reverse(reverse)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;char valueToChar(float value)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (value == 1.0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ' ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.9)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '.';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.8)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ',';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.7)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'x';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.6)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '+';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.5)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'o';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'O';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '0';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '9';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '8';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'X';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;bool isValid(sf::Vector2u size, sf::Vector2u pos)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (pos.x &lt; size.x &amp;&amp; pos.y &lt; size.y &amp;&amp; pos.x &gt;= 0 &amp;&amp; pos.y &gt;= 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;float lookUpPixel(const sf::Uint8*pixels, sf::Vector2u size,sf::Vector2u pos)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const sf::Uint8*pixel = pixels + ((size.x*int(pos.y) + int(pos.x)))*4;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float value = pixel[0] + pixel[1] + pixel[2];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return value / (255.0f*3.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::string convert(std::string filename)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sf::Image image;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image.loadFromFile(filename);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const sf::Uint8*pixels = image.getPixelsPtr();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::string result;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int height = width*(float(image.getSize().y)/image.getSize().x)*0.5f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float modx = float(image.getSize().x)/ width;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float mody = float(image.getSize().y)/ height;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (unsigned int y = 0; y &lt; height; y ++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (unsigned int x = 0; x &lt; width; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sf::Vector2u pos;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos.x = unsigned int(x*modx);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos.y = unsigned int(y*mody);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isValid(image.getSize(), pos))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float value = lookUpPixel(pixels, image.getSize(), pos);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (reverse)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = 1.0f - value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result += valueToChar(value);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result += "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result += "END";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return result;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
private:<br />
&nbsp;&nbsp;&nbsp;&nbsp;int width;<br />
&nbsp;&nbsp;&nbsp;&nbsp;bool reverse;<br />
};<br />
<br />
void saveToFile(std::string data)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::fstream file;<br />
&nbsp;&nbsp;&nbsp;&nbsp;file.open("result.txt", std::ios::out|std::ios::trunc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;file &lt;&lt; data;<br />
&nbsp;&nbsp;&nbsp;&nbsp;file.close();<br />
}<br />
<br />
int main()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "Width: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;int size;<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cin &gt;&gt; size;<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; std::endl;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Converter converter(size, false);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "File name: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::string name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cin &gt;&gt; name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; std::endl;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;saveToFile(converter.convert(name));<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "DONE" &lt;&lt; std::endl;<br />
}</code></div></div>]]></description>
			<content:encoded><![CDATA[Prosty program, który zamienia obrazki na litery.<br />
<br />
Przykład:<br />
przed<br />
<img src="https://i.imgur.com/2GrowjQ.jpg" loading="lazy"  alt="[Image: 2GrowjQ.jpg]" class="mycode_img" /><br />
po<br />
<img src="https://i.imgur.com/T4M57fC.png" loading="lazy"  alt="[Image: T4M57fC.png]" class="mycode_img" /><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#include &lt;SFML&#92;Graphics.hpp&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;fstream&gt;<br />
<br />
<br />
class Converter<br />
{<br />
public:<br />
&nbsp;&nbsp;&nbsp;&nbsp;Converter(int width, bool reverse) :width(width), reverse(reverse)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;char valueToChar(float value)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (value == 1.0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ' ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.9)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '.';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.8)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ',';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.7)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'x';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.6)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '+';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.5)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'o';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'O';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '0';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '9';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (value &gt; 0.1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '8';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'X';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;bool isValid(sf::Vector2u size, sf::Vector2u pos)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (pos.x &lt; size.x &amp;&amp; pos.y &lt; size.y &amp;&amp; pos.x &gt;= 0 &amp;&amp; pos.y &gt;= 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;float lookUpPixel(const sf::Uint8*pixels, sf::Vector2u size,sf::Vector2u pos)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const sf::Uint8*pixel = pixels + ((size.x*int(pos.y) + int(pos.x)))*4;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float value = pixel[0] + pixel[1] + pixel[2];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return value / (255.0f*3.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::string convert(std::string filename)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sf::Image image;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image.loadFromFile(filename);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const sf::Uint8*pixels = image.getPixelsPtr();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::string result;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int height = width*(float(image.getSize().y)/image.getSize().x)*0.5f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float modx = float(image.getSize().x)/ width;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float mody = float(image.getSize().y)/ height;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (unsigned int y = 0; y &lt; height; y ++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (unsigned int x = 0; x &lt; width; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sf::Vector2u pos;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos.x = unsigned int(x*modx);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos.y = unsigned int(y*mody);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isValid(image.getSize(), pos))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float value = lookUpPixel(pixels, image.getSize(), pos);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (reverse)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = 1.0f - value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result += valueToChar(value);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result += "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result += "END";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return result;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
private:<br />
&nbsp;&nbsp;&nbsp;&nbsp;int width;<br />
&nbsp;&nbsp;&nbsp;&nbsp;bool reverse;<br />
};<br />
<br />
void saveToFile(std::string data)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::fstream file;<br />
&nbsp;&nbsp;&nbsp;&nbsp;file.open("result.txt", std::ios::out|std::ios::trunc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;file &lt;&lt; data;<br />
&nbsp;&nbsp;&nbsp;&nbsp;file.close();<br />
}<br />
<br />
int main()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "Width: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;int size;<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cin &gt;&gt; size;<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; std::endl;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Converter converter(size, false);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "File name: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::string name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cin &gt;&gt; name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; std::endl;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;saveToFile(converter.convert(name));<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "DONE" &lt;&lt; std::endl;<br />
}</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Stargate thingy]]></title>
			<link>https://forum.goldspeak.pl/showthread.php?tid=933</link>
			<pubDate>Wed, 22 Feb 2017 15:31:04 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.goldspeak.pl/member.php?action=profile&uid=11">Alucard</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.goldspeak.pl/showthread.php?tid=933</guid>
			<description><![CDATA[https://alucard87pl.me/sg1/<br />
<img src="https://forum.goldspeak.pl/images/smilies/arrow.png" alt="Strzałka" title="Strzałka" class="smilie smilie_23" /> NOWA WERSJA <a href="https://4play.net.pl/sg1/" target="_blank" rel="noopener" class="mycode_url">https://4play.net.pl/sg1/</a><br />
<br />
Taka sobie bzdurka napisana w <a href="https://p5js.org/" target="_blank" rel="noopener" class="mycode_url"><span style="font-family: Courier New;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">p5js</span></span></a>, całkiem fajnym wrapperze do JS.<br />
<br />
Kod do pobrania:<br />
<a href="https://git.starchasers.ovh/alucard87pl/SG_Sim/archive/master.zip" target="_blank" rel="noopener" class="mycode_url"><img src="https://forum.goldspeak.pl/images/smilies/arrow.png" alt="Strzałka" title="Strzałka" class="smilie smilie_23" /> bezpośrednio (ZIP)</a><br />
<br />
<br />
lub do wglądu<br />
<br />
<a href="https://git.starchasers.ovh/alucard87pl/SG_Sim" target="_blank" rel="noopener" class="mycode_url"><img src="https://forum.goldspeak.pl/images/smilies/arrow.png" alt="Strzałka" title="Strzałka" class="smilie smilie_23" /> Starchasersowy GOGs</a><br />
<br />
Znane błędy:<ul class="mycode_list"><li><span style="text-decoration: line-through;" class="mycode_s">można wybrać takie same symbole (powino być 7 różnych)</span> naprawione w nowej wersji<br />
</li>
</ul>
<br />
Planowane funkcjonalności:<ul class="mycode_list"><li>wybór trybu wybierania adresu (przez DHD lub "komputerowo")<br />
</li>
<li>baza adresów<br />
</li>
</ul>
]]></description>
			<content:encoded><![CDATA[https://alucard87pl.me/sg1/<br />
<img src="https://forum.goldspeak.pl/images/smilies/arrow.png" alt="Strzałka" title="Strzałka" class="smilie smilie_23" /> NOWA WERSJA <a href="https://4play.net.pl/sg1/" target="_blank" rel="noopener" class="mycode_url">https://4play.net.pl/sg1/</a><br />
<br />
Taka sobie bzdurka napisana w <a href="https://p5js.org/" target="_blank" rel="noopener" class="mycode_url"><span style="font-family: Courier New;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">p5js</span></span></a>, całkiem fajnym wrapperze do JS.<br />
<br />
Kod do pobrania:<br />
<a href="https://git.starchasers.ovh/alucard87pl/SG_Sim/archive/master.zip" target="_blank" rel="noopener" class="mycode_url"><img src="https://forum.goldspeak.pl/images/smilies/arrow.png" alt="Strzałka" title="Strzałka" class="smilie smilie_23" /> bezpośrednio (ZIP)</a><br />
<br />
<br />
lub do wglądu<br />
<br />
<a href="https://git.starchasers.ovh/alucard87pl/SG_Sim" target="_blank" rel="noopener" class="mycode_url"><img src="https://forum.goldspeak.pl/images/smilies/arrow.png" alt="Strzałka" title="Strzałka" class="smilie smilie_23" /> Starchasersowy GOGs</a><br />
<br />
Znane błędy:<ul class="mycode_list"><li><span style="text-decoration: line-through;" class="mycode_s">można wybrać takie same symbole (powino być 7 różnych)</span> naprawione w nowej wersji<br />
</li>
</ul>
<br />
Planowane funkcjonalności:<ul class="mycode_list"><li>wybór trybu wybierania adresu (przez DHD lub "komputerowo")<br />
</li>
<li>baza adresów<br />
</li>
</ul>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Konwerter systemów n-liczbowych.]]></title>
			<link>https://forum.goldspeak.pl/showthread.php?tid=883</link>
			<pubDate>Mon, 31 Aug 2015 06:20:04 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.goldspeak.pl/member.php?action=profile&uid=11">Alucard</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.goldspeak.pl/showthread.php?tid=883</guid>
			<description><![CDATA[Program naskrobałem w liceum, będąc jeszcze pięknym i młodym.<br />
Napisany w Delphi, potrafi konwertować <span style="font-weight: bold;" class="mycode_b">z i na</span> systemy liczbowe od base2 do base16 włącznie.<br />
Program jest ułomny (nie sprawdza poprawności podanych danych i wykrzacza się w takim wypadku) i brzydki, ale działa <img src="https://forum.goldspeak.pl/images/smilies/biggrin.gif" alt="Duży uśmiech" title="Duży uśmiech" class="smilie smilie_4" /><br />
<a href="https://dl.dropboxusercontent.com/u/27421034/Konwerter.exe" target="_blank" rel="noopener" class="mycode_url">Konwerter.exe</a><br />
<br />
Grzebiąc po starych płytach, udało mi się znaleźć źródełka. Wyciąłem tylko najsmakowitsze kąski (dobre 60% kodu to tylko wymagane przez Delphi pierdoły)<br />
<br />
Gwoli wyjaśnienia - program 'oszukuje', prezeliczając najpierw naszą liczbę podaną w dowolnym systemie na dziesiętny, a dopiero potem z dziesiętnego na docelowy:<br />
<br />
Funkcja przeliczająca z baseX do base10:<br />
[spoiler]<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function XXX_na_DEC(value: String; system: Integer): String;<br />
var i, suma, dlug: Integer;<br />
    {============================================}<br />
    function Zamien(znak: Char): Integer;<br />
    begin<br />
      if znak in ['a', 'A'] then Result := 10<br />
      else if znak in ['b', 'B'] then Result := 11<br />
      else if znak in ['c', 'C'] then Result := 12<br />
      else if znak in ['d', 'D'] then Result := 13<br />
      else if znak in ['e', 'E'] then Result := 14<br />
      else if znak in ['f', 'F'] then Result := 15<br />
      else Result := StrToInt(znak);<br />
    end;<br />
    {============================================}<br />
begin<br />
  if value = '' then<br />
    begin<br />
      Result := '';<br />
      Exit;<br />
    end;<br />
  suma := 0;<br />
  dlug := Length(value) - 1;<br />
  for i := 0 to dlug do<br />
    suma := suma +<br />
            Zamien(value[i + 1]) * Round(IntPower(system, (dlug - i)));<br />
  Result := IntToStr(suma);<br />
end;</code></div></div>[/spoiler]<br />
i druga fuinkcja, przeliczająca z base10 do baseY:<br />
[spoiler]<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function DEC_na_XXX(value: String; system: Integer): String;<br />
var liczba: Integer;<br />
    {=======================================}<br />
    function Zamien(licz: Integer): String;<br />
    begin<br />
      case licz of<br />
        10: Result := 'A';<br />
        11: Result := 'B';<br />
        12: Result := 'C';<br />
        13: Result := 'D';<br />
        14: Result := 'E';<br />
        15: Result := 'F';<br />
        else Result := IntToStr(licz);<br />
      end;<br />
    end;<br />
    {=======================================}<br />
begin<br />
  if value = '' then<br />
    begin<br />
      Result := '';<br />
      Exit;<br />
    end;<br />
  Result := '';<br />
  liczba := StrToInt(value);<br />
  Repeat<br />
    Result := Zamien(liczba mod system) + Result;<br />
    liczba := liczba div system;<br />
  until liczba = 0;<br />
end;</code></div></div>[/spoiler]<br />
Następnie wszystko ładnie wrapujemy w kolejną funkcję:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function XXX_na_YYY(value: String; z_xxx, na_yyy: Integer): String;<br />
begin<br />
  Result := DEC_na_XXX(XXX_na_DEC(value, z_xxx), na_yyy);<br />
end;</code></div></div>i wywołujemy, na przykład konwertując z trójkowego na dwunastkowy:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Edit2.Text := XXX_na_YYY(Edit1.Text, 3, 12);  </code></div></div>]]></description>
			<content:encoded><![CDATA[Program naskrobałem w liceum, będąc jeszcze pięknym i młodym.<br />
Napisany w Delphi, potrafi konwertować <span style="font-weight: bold;" class="mycode_b">z i na</span> systemy liczbowe od base2 do base16 włącznie.<br />
Program jest ułomny (nie sprawdza poprawności podanych danych i wykrzacza się w takim wypadku) i brzydki, ale działa <img src="https://forum.goldspeak.pl/images/smilies/biggrin.gif" alt="Duży uśmiech" title="Duży uśmiech" class="smilie smilie_4" /><br />
<a href="https://dl.dropboxusercontent.com/u/27421034/Konwerter.exe" target="_blank" rel="noopener" class="mycode_url">Konwerter.exe</a><br />
<br />
Grzebiąc po starych płytach, udało mi się znaleźć źródełka. Wyciąłem tylko najsmakowitsze kąski (dobre 60% kodu to tylko wymagane przez Delphi pierdoły)<br />
<br />
Gwoli wyjaśnienia - program 'oszukuje', prezeliczając najpierw naszą liczbę podaną w dowolnym systemie na dziesiętny, a dopiero potem z dziesiętnego na docelowy:<br />
<br />
Funkcja przeliczająca z baseX do base10:<br />
[spoiler]<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function XXX_na_DEC(value: String; system: Integer): String;<br />
var i, suma, dlug: Integer;<br />
    {============================================}<br />
    function Zamien(znak: Char): Integer;<br />
    begin<br />
      if znak in ['a', 'A'] then Result := 10<br />
      else if znak in ['b', 'B'] then Result := 11<br />
      else if znak in ['c', 'C'] then Result := 12<br />
      else if znak in ['d', 'D'] then Result := 13<br />
      else if znak in ['e', 'E'] then Result := 14<br />
      else if znak in ['f', 'F'] then Result := 15<br />
      else Result := StrToInt(znak);<br />
    end;<br />
    {============================================}<br />
begin<br />
  if value = '' then<br />
    begin<br />
      Result := '';<br />
      Exit;<br />
    end;<br />
  suma := 0;<br />
  dlug := Length(value) - 1;<br />
  for i := 0 to dlug do<br />
    suma := suma +<br />
            Zamien(value[i + 1]) * Round(IntPower(system, (dlug - i)));<br />
  Result := IntToStr(suma);<br />
end;</code></div></div>[/spoiler]<br />
i druga fuinkcja, przeliczająca z base10 do baseY:<br />
[spoiler]<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function DEC_na_XXX(value: String; system: Integer): String;<br />
var liczba: Integer;<br />
    {=======================================}<br />
    function Zamien(licz: Integer): String;<br />
    begin<br />
      case licz of<br />
        10: Result := 'A';<br />
        11: Result := 'B';<br />
        12: Result := 'C';<br />
        13: Result := 'D';<br />
        14: Result := 'E';<br />
        15: Result := 'F';<br />
        else Result := IntToStr(licz);<br />
      end;<br />
    end;<br />
    {=======================================}<br />
begin<br />
  if value = '' then<br />
    begin<br />
      Result := '';<br />
      Exit;<br />
    end;<br />
  Result := '';<br />
  liczba := StrToInt(value);<br />
  Repeat<br />
    Result := Zamien(liczba mod system) + Result;<br />
    liczba := liczba div system;<br />
  until liczba = 0;<br />
end;</code></div></div>[/spoiler]<br />
Następnie wszystko ładnie wrapujemy w kolejną funkcję:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function XXX_na_YYY(value: String; z_xxx, na_yyy: Integer): String;<br />
begin<br />
  Result := DEC_na_XXX(XXX_na_DEC(value, z_xxx), na_yyy);<br />
end;</code></div></div>i wywołujemy, na przykład konwertując z trójkowego na dwunastkowy:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Edit2.Text := XXX_na_YYY(Edit1.Text, 3, 12);  </code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Line Follower]]></title>
			<link>https://forum.goldspeak.pl/showthread.php?tid=17</link>
			<pubDate>Tue, 10 Feb 2015 23:35:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.goldspeak.pl/member.php?action=profile&uid=1">marcin212</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.goldspeak.pl/showthread.php?tid=17</guid>
			<description><![CDATA[Ostatnio pobawiłem się trochę arduino i udało mi się zbudować linefollower-a. Oto rezultat:<br />
<br />
<br />
<br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/h6ivqmqqb1M" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
Kilka zdjęć:<br />
[spoiler]<br />
<br />
<img src="http://goldspeak.pl/forum/uploads/20141208_140124.jpg" loading="lazy"  alt="[Image: 20141208_140124.jpg]" class="mycode_img" /><br />
<br />
<span style="font-size: x-large;" class="mycode_size">Mój prymitywny czujnik(nie miałem fototranzystorów):</span><br />
<img src="http://goldspeak.pl/forum/uploads/20141208_130904.jpg" loading="lazy"  alt="[Image: 20141208_130904.jpg]" class="mycode_img" /><br />
<br />
<img src="http://goldspeak.pl/forum/uploads/20141208_160946.jpg" loading="lazy"  alt="[Image: 20141208_160946.jpg]" class="mycode_img" /><br />
<br />
<img src="http://goldspeak.pl/forum/uploads/20141208_202224.jpg" loading="lazy"  alt="[Image: 20141208_202224.jpg]" class="mycode_img" /><br />
[/spoiler]]]></description>
			<content:encoded><![CDATA[Ostatnio pobawiłem się trochę arduino i udało mi się zbudować linefollower-a. Oto rezultat:<br />
<br />
<br />
<br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/h6ivqmqqb1M" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
Kilka zdjęć:<br />
[spoiler]<br />
<br />
<img src="http://goldspeak.pl/forum/uploads/20141208_140124.jpg" loading="lazy"  alt="[Image: 20141208_140124.jpg]" class="mycode_img" /><br />
<br />
<span style="font-size: x-large;" class="mycode_size">Mój prymitywny czujnik(nie miałem fototranzystorów):</span><br />
<img src="http://goldspeak.pl/forum/uploads/20141208_130904.jpg" loading="lazy"  alt="[Image: 20141208_130904.jpg]" class="mycode_img" /><br />
<br />
<img src="http://goldspeak.pl/forum/uploads/20141208_160946.jpg" loading="lazy"  alt="[Image: 20141208_160946.jpg]" class="mycode_img" /><br />
<br />
<img src="http://goldspeak.pl/forum/uploads/20141208_202224.jpg" loading="lazy"  alt="[Image: 20141208_202224.jpg]" class="mycode_img" /><br />
[/spoiler]]]></content:encoded>
		</item>
	</channel>
</rss>