13.11.2014 Aufrufe

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Aufgabe</strong> 3<br />

Stefan Hansch, Markus Wirsing, <strong>Matthias</strong> <strong>Springer</strong><br />

356<br />

357 // Naechste Zeile lesen, da es die aktuelle Zeile ein Kommentar ist<br />

358 readLine(file_handle);<br />

359 }<br />

360 else<br />

361 {<br />

362 int counter = 0;<br />

363 // Erstes Zeichen der Zeile einlesen<br />

364 // fread(currentLine + 1, 1, 1, file_handle);<br />

365<br />

366 while (currentLine[counter] != 10)<br />

367 {<br />

368 // Zeichen fuer Zeichen bis zum Zeilensprung einlesen<br />

369 counter++;<br />

370 fread(currentLine + counter, 1, 1, file_handle);<br />

371 }<br />

372<br />

373 currentLine[counter] = 0;<br />

374 }<br />

375 }<br />

376<br />

377 /// *************************************************<br />

378 /// * Zeichnet einen dicken Punkt auf die Map. *<br />

379 /// *************************************************<br />

380 void paintDot(int x, int y)<br />

381 {<br />

382 // Ueberpruefe, ob der Punkt ueberhalb auf die Karte gezeichnet werden<br />

kann<br />

383<br />

384 if ((x > -1) && (x < proportions[0]) && (y > -1) && (y < proportions[1]))<br />

385 {<br />

386 setPixel(x, y, 0, 0, 0);<br />

387<br />

388 // Zeichne einen dicken Punkt<br />

389 setPixel(x - 1, y, 0, 0, 0);<br />

390 setPixel(x + 1, y, 0, 0, 0);<br />

391 setPixel(x, y - 1, 0, 0, 0);<br />

392 setPixel(x, y + 1, 0, 0, 0);<br />

393 }<br />

394 else<br />

395 {<br />

396 printf("[W] Punkt kann nicht gezeichnet werden, da ausserhalb der<br />

Landkarte! Pixel(%d | %d).\n", x, y);<br />

397 }<br />

398 }<br />

399<br />

400 /// *************************************************<br />

401 /// * Zeichnet eine Linie auf die Map. *<br />

402 /// *************************************************<br />

403 void paintLine(int x1, int x2, int y1, int y2, int r, int g, int b)<br />

404 {<br />

405 // Startpunkte der Linien zeichen<br />

406 paintDot(x1, y1);<br />

407 paintDot(x2, y2);<br />

408<br />

409 // Ueberprufe, ob die Stecke ueberhaupt gezeichnet werden kann<br />

410 if ((x1 > -1) && (x2 > -1) && (y1 > -1) && (y2 > -1) && (x1 < proportions<br />

[0]) && (x2 < proportions[0]) && (y1 < proportions[1]) && (y2 <<br />

proportions[1]))<br />

411 {<br />

412 // Alles in Ordnung!<br />

413 }<br />

414 else<br />

415 {<br />

416 printf("[W] Linie kann nicht gezeichnet werden, da ausserhalb der<br />

Landkarte! Zeichne nur den sichtbaren Bereich ein!\n");<br />

417 }<br />

418<br />

419 // Zeichen Linie<br />

420 double vector_direction[2]; // Der Richtungsvektor der Gerade<br />

421 vector_direction[0] = x2 - x1;<br />

422 vector_direction[1] = y2 - y1;<br />

423 // Richtungsvektor zum Einheitsvektor (Laenge 1) machen<br />

424 double vector_length = sqrt(vector_direction[0] * vector_direction[0] +<br />

23

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!