Webprojekte
Ich programmiere vor allem unter Linux, nutze aber auch ab und zu Windows für bestimmte Aufgaben. Meine Leidenschaft für das Programmieren geht über die Erstellung einfacher Webseiten hinaus. Ich erstelle Projekte, die mehr als nur statische Seiten bieten.
HTML, PHP und JavaScript sind die Sprachen, die mich am meisten interessieren. Ich habe auch begonnen, mich mit C++ zu beschäftigen, was eine spannende Herausforderung darstellt. Besonders spannend finde ich es, Datenbanken zu erstellen und mit ihnen zu arbeiten, um umfangreiche und dynamische Webanwendungen zu entwickeln.
Ein weiteres Thema, das mich interessiert, ist die Sicherheit im Internet. Ich achte darauf, dass meine Webprojekte sicher sind und dass Daten, die über das Netz übertragen werden, geschützt sind. Dazu gehört die Implementierung von Sicherheitsmassnahmen wie HTTPS, Datenverschlüsselung und Schutz vor gängigen Angriffen.
1. Der Chat
Der Chat besteht aus einem einfachen Nachrichtensystem, das es den Nutzern ermöglicht, Nachrichten zu senden und diese anzuzeigen. Alle gesendeten Nachrichten werden in einer Textdatei gespeichert. Zusätzlich werden Nachrichten mit einer Zeitstempel versehen, um den Verlauf nachvollziehbar zu machen.
Funktionsweise:
- Die Nachrichten werden in einer Datei namens
messages.txt
gespeichert.
- Jede Nachricht wird mit der IP Adresse des Nutzers und einem Zeitstempel versehen.
- Beim Laden der Seite werden alle Nachrichten aus der Datei geladen und im Chat angezeigt.
- Der Chat löscht alle Nachrichten um Mitternacht automatisch, um die Datei zu bereinigen und Platz für neue Nachrichten zu schaffen.
Hier ist ein Beispielcode, der für die Chat Funktionalität verantwortlich ist:
<?php
$message = $_POST['message'];
$ip = $_SERVER['REMOTE_ADDR'];
$timestamp = date("Y-m-d H:i:s");
$file = fopen("messages.txt", "a");
fwrite($file, "$timestamp - $ip: $message\n");
fclose($file);
?>
Und hier ist der HTML Code, um eine Nachricht zu senden:
<form method="POST">
<label for="message">Nachricht:</label>
<input type="text" id="message" name="message" required />
<button type="submit">Senden</button>
</form>
In diesem Code Snippet sehen wir:
- Das Formular sendet die Nachricht an den Server mittels POST.
- Die Nachricht wird dann zusammen mit dem Zeitstempel und der IP Adresse in einer Textdatei gespeichert.
- Alle Nachrichten werden beim Laden der Seite aus der Textdatei abgerufen und im Chat angezeigt.
2. Das Spiel
Das Space Shooter Spiel ermöglicht es dem Spieler, ein Raumschiff zu steuern, das auf Feinde schiesst. Der Spieler muss die Feinde abschiessen, bevor diese das Raumschiff erreichen. Das Spiel nutzt das HTML5 Canvas Element und JavaScript für die Spiellogik und das Zeichnen von Elementen auf dem Bildschirm.
Funktionsweise:
- Das Spiel wird mit
<canvas>
in HTML5 realisiert.
- Das Raumschiff wird durch Maus oder Touchbewegungen gesteuert.
- Feindliche Schiffe erscheinen zufällig und bewegen sich nach unten.
- Das Ziel ist es, so viele Feinde wie möglich abzuschiessen, ohne mit ihnen zu kollidieren.
Hier ist der grundlegende JavaScript Code für das Spiel:
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
const ship = { x: canvas.width / 2, y: canvas.height - 50, width: 50, height: 30, color: 'white' };
const projectiles = [];
const enemies = [];
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// Bewege das Raumschiff mit der Maus
canvas.addEventListener('mousemove', function(event) {
ship.x = event.clientX - ship.width / 2;
});
// Schießen
canvas.addEventListener('click', function() {
projectiles.push({ x: ship.x + ship.width / 2, y: ship.y, width: 5, height: 10, color: 'red' });
});
function gameLoop() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Raumschiff zeichnen
ctx.fillStyle = ship.color;
ctx.fillRect(ship.x, ship.y, ship.width, ship.height);
// Schüsse bewegen
projectiles.forEach(function(projectile) {
projectile.y -= 5;
ctx.fillStyle = projectile.color;
ctx.fillRect(projectile.x, projectile.y, projectile.width, projectile.height);
});
// Feinde bewegen
enemies.forEach(function(enemy) {
enemy.y += 2;
ctx.fillStyle = 'green';
ctx.fillRect(enemy.x, enemy.y, 40, 40);
});
requestAnimationFrame(gameLoop);
}
gameLoop();