Codeerklärung.md hinzugefügt
erklärung des codes
This commit is contained in:
parent
afd5c0ec5f
commit
a97a937c27
186
Codeerklärung.md
Normal file
186
Codeerklärung.md
Normal 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
|
Loading…
x
Reference in New Issue
Block a user