<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://hyperdramatik.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Drawing_bodies</id>
	<title>Drawing bodies - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://hyperdramatik.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Drawing_bodies"/>
	<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Drawing_bodies&amp;action=history"/>
	<updated>2026-05-20T20:38:31Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in hyperdramatik</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Drawing_bodies&amp;diff=1173&amp;oldid=prev</id>
		<title>Jnkummer: Die Seite wurde neu angelegt: „Datei:Drawing bodies.PNG  //////////////////////////////////////////////////////////////////// // S&amp;&amp;O SS2020 // course: *From Space to Space* ////////////…“</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Drawing_bodies&amp;diff=1173&amp;oldid=prev"/>
		<updated>2020-05-06T07:54:25Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „&lt;a href=&quot;/mediawiki/index.php/Datei:Drawing_bodies.PNG&quot; title=&quot;Datei:Drawing bodies.PNG&quot;&gt;Datei:Drawing bodies.PNG&lt;/a&gt;  //////////////////////////////////////////////////////////////////// // S&amp;amp;&amp;amp;O SS2020 // course: *From Space to Space* ////////////…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Drawing bodies.PNG]]&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// S&amp;amp;&amp;amp;O SS2020 // course: *From Space to Space*&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// this sketch sends your mouse x,y coordinates to a shiftr namespace &lt;br /&gt;
// and receives other mouse x,y coordinates from the same namespace&lt;br /&gt;
// code based on example by Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/processing-mqtt&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
import mqtt.*;  // import MQTT library&lt;br /&gt;
MQTTClient client;  // create instance of MQTTClient&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////// DECLARE GLOBAL VARIABLES /////////////////////&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// !!! CHANGE p1 and p2 depending on which player you are !!! //&lt;br /&gt;
String mePlayer = &amp;quot;/janne_multiplayer/orange/p2&amp;quot;;&lt;br /&gt;
String otherPlayer = &amp;quot;/janne_multiplayer/orange/p1&amp;quot;;&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
int otherMouseX = 0;  //for incoming values from other player's mouse xy&lt;br /&gt;
int otherMouseY = 0;&lt;br /&gt;
int otherPreviousMouseX = 0;  //to keep track of last mouse position for drawing line&lt;br /&gt;
int otherPreviousMouseY = 0;&lt;br /&gt;
&lt;br /&gt;
long timeStamp;  //to keep track of time&lt;br /&gt;
int delayTime = 500/35;  //for use to publish messages only every 35 milliseconds!&lt;br /&gt;
&lt;br /&gt;
int mouseClick = 0; //used to toggle between background fade and no-fade&lt;br /&gt;
PImage layout;&lt;br /&gt;
PImage drawer;&lt;br /&gt;
PImage drawer2;&lt;br /&gt;
boolean showImage = false;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  client = new MQTTClient(this);&lt;br /&gt;
  client.connect(&amp;quot;mqtt://jannenora:Monkey47@broker.shiftr.io&amp;quot;, &amp;quot;works&amp;quot;);&lt;br /&gt;
  size(800, 550);&lt;br /&gt;
  layout = loadImage(&amp;quot;drops2.jpeg&amp;quot;);&lt;br /&gt;
  drawer = loadImage(&amp;quot;jannesmall_character.png&amp;quot;);&lt;br /&gt;
  drawer2 = loadImage(&amp;quot;waldgeister.png&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// RECEIVE //&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
void clientConnected() {&lt;br /&gt;
  println(&amp;quot;client connected&amp;quot;);&lt;br /&gt;
  client.subscribe(otherPlayer + &amp;quot;/xy&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String topic, byte[] payload) {&lt;br /&gt;
&lt;br /&gt;
  if (topic.equals(otherPlayer + &amp;quot;/xy&amp;quot;) == true) {&lt;br /&gt;
    // the incoming MQTT &amp;quot;message&amp;quot; is a String: &amp;quot;xValue,yValue&amp;quot;&lt;br /&gt;
    // to unpack it we use the &amp;quot;split&amp;quot; function:&lt;br /&gt;
    String incomingCoordinates = new String(payload);  &lt;br /&gt;
    String[] xy = split(incomingCoordinates, ',');&lt;br /&gt;
    println(&amp;quot;new message: &amp;quot; + topic + &amp;quot; x: &amp;quot; + xy[0] + &amp;quot; y: &amp;quot; +xy[1]);&lt;br /&gt;
    otherMouseX = int(xy[0]);&lt;br /&gt;
    otherMouseY = int(xy[1]);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// SEND &amp;amp; DRAW my line //&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
//!only DRAW my line and publish my coordinates when my mouse moves:&lt;br /&gt;
void mouseMoved() {  &lt;br /&gt;
  image(drawer, pmouseX, pmouseY, mouseX, mouseY);&lt;br /&gt;
  /*stroke(19, 120, 200);  //set line colour R,G,B&lt;br /&gt;
  strokeWeight(10);  //line thickness&lt;br /&gt;
  fill (356);&lt;br /&gt;
  ellipse (pmouseX, pmouseY, mouseX, mouseY);*/&lt;br /&gt;
&lt;br /&gt;
  //the MQTT connection will close if you send more than 25 operations per second!&lt;br /&gt;
  //so we implement a delay to SEND my coordinates only every xxx milliseconds:&lt;br /&gt;
  if (millis() - timeStamp &amp;gt; delayTime) {&lt;br /&gt;
    timeStamp = millis();&lt;br /&gt;
    client.publish(mePlayer + &amp;quot;/xy&amp;quot;, mouseX + &amp;quot;,&amp;quot; + mouseY); // (&amp;quot;topic&amp;quot;, &amp;quot;message&amp;quot;)&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// DRAW other line //&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  if (mouseClick % 2 == 0) {&lt;br /&gt;
    tint(255, 100);  //tint=tönen. gives the image transparency to slowly fade over line&lt;br /&gt;
    image(layout, 0, 0);&lt;br /&gt;
  }&lt;br /&gt;
  image(drawer2, pmouseX, pmouseY, mouseX, mouseY);&lt;br /&gt;
  &lt;br /&gt;
  /*stroke(10, 160, 230);  //set line colour R,G,B&lt;br /&gt;
  strokeWeight(10);  //line thickness&lt;br /&gt;
  line(otherPreviousMouseX, otherPreviousMouseY, otherMouseX, otherMouseY); */&lt;br /&gt;
  otherPreviousMouseX = otherMouseX;&lt;br /&gt;
  otherPreviousMouseY = otherMouseY;    //click mouse to turn on/off fade effect:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
void mouseClicked() {&lt;br /&gt;
  mouseClick++;&lt;br /&gt;
  println(mouseClick);&lt;br /&gt;
  if (mouseClick % 2 != 0) {&lt;br /&gt;
    image(layout, 0, 0);&lt;br /&gt;
  }&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
void connectionLost() {&lt;br /&gt;
  println(&amp;quot;connection lost&amp;quot;);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jnkummer</name></author>
	</entry>
</feed>