Codeerklärung.md hinzugefügt

erklärung des codes
This commit is contained in:
Daniel Fast 2025-05-07 09:08:09 +02:00
parent afd5c0ec5f
commit a97a937c27

186
Codeerklärung.md Normal file
View File

@ -0,0 +1,186 @@
## MainWindow.xaml.cs Erklärung Zeile für Zeile
using-Anweisungen:
Diese laden verschiedene Bibliotheken, die für die Funktionen des Programms benötigt werden z.B. für GUI (WPF), Netzwerk, JSON-Verarbeitung, Textverarbeitung, usw.
```csharp
System.Text Für z.B. StringBuilder oder Kodierungen.
System.Windows.* Alles was WPF betrifft: Fenster, Controls, Styles etc.
System.Net.Http Für HTTP-Anfragen, hier verwendet für Wetter-API.
System.Text.Json Zum Lesen/Verarbeiten von JSON-Daten.
System.Threading.Tasks Für async/await, also asynchrone Methoden.
System.IO Für Dateioperationen wie Speichern des Chatverlaufs.
```
```csharp
namespace Chatbot_WPF_Projekt
{
public partial class MainWindow : Window
```
- namespace: Projektname.
- MainWindow: Hauptfenster des Programms.
- : Window: Erbt von WPF-Fensterklasse.
```csharp
private string currentLocation = "";
public MainWindow()
{
InitializeComponent();
}
```
- currentLocation: Speicherort für die aktuelle Stadt.
- InitializeComponent(): Verbindet XAML und C#-Code.
```csharp
private async void SendButton_Click(object sender, RoutedEventArgs e)
```
- private → Die Methode gehört nur zu dieser Klasse, andere Klassen sehen sie nicht.
- async → Die Methode kann auf Dinge warten, wie z.B. eine Antwort vom Wetterdienst.
- void → Die Methode gibt nichts zurück.
- SendButton_Click → So heißt die Methode, typisch für Button-Klicks.
- (object sender, RoutedEventArgs e) → Das sind Infos über das Klick-Ereignis. Wird von WPF automatisch mitgegeben.
```csharp
string userInput = InputTextBox.Text.Trim();
```
- Holt Nutzereingabe, entfernt Leerzeichen.
```csharp
if (string.IsNullOrEmpty(userInput)) ...
```
- Wenn Eingabe leer → Hinweis.
```csharp
ChatOutput.Text += $"Du: {userInput}\n";
```
- Gibt Nutzereingabe im Chatverlauf aus.
```csharp
string botResponse = "";
```
- Legt Bot-Antwortvariable an.
```csharp
botResponse = "Liste aller Befehle: !hilfe, !joke, !standort <stadt>, !zeit, !wetter";
```
- Listet alle befehle auf bei schreiben des !hilfe commands
```csharp
string[] witze = new string[10]; ...
Random zufall = new Random(); ...
```
- Zufälliger Witz aus Liste.
```csharp
string[] parts = userInput.Split(' ', 2);
currentLocation = parts[1];
```
- Stadt speichern.
```csharp
botResponse = $"Aktuelle Uhrzeit in {currentLocation}: {DateTime.Now.ToShortTimeString()}";
```
- Gibt lokale Uhrzeit aus
```csharp
botResponse = await GetWeatherAsync(currentLocation);
```
- Ruft Wetterdaten über API ab.
```csharp
botResponse = "Befehl nicht erkannt.";
```
- befehl falsch oder garnicht geschrieben
```csharp
private void InputTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
SendButton_Click(sender, e);
}
```
- Drücken von Enter löst SendButton aus.
```csharp
private void ClearButton_Click(object sender, RoutedEventArgs e)
{
ChatOutput.Text = string.Empty;
}
```
- löscht den verlauf wenn man auf den clearbutton drückt
```csharp
private void Color_theme_Checked ...
private void Color_theme_Unchecked ...
```
- Checked: Dunkler Hintergrund, helle Schrift.
- Unchecked: Heller Hintergrund, dunkle Schrift.
```csharp
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string fileName = $"Chat_{DateTime.Now:yyyy-MM-dd_HHmm}.txt";
...
}
```
- Speichert Chat als .txt mit Datum/Uhrzeit im Namen.
```csharp
private async Task<string> GetWeatherAsync(string city)
string url = $"https://api.openweathermap.org/data/2.5/weather?...";
```
- URL zusammenbauen:
- HTTP-Anfrage senden mit HttpClient
```csharp
double temp = root.GetProperty("main").GetProperty("temp").GetDouble();
string description = root.GetProperty("weather")[0].GetProperty("description").GetString();
```
- JSON-Daten parsen:
```csharp
return $"Aktuelles Wetter in {city}: {temp}°C, {description}";
```
- atntwort erzeugen
```csharp
catch (Exception ex)
{
return "Fehler beim Abrufen der Wetterdaten.";
}
```
- fehler behandlung