C# :: Aufgabe #193 :: Lösung #1
2 Lösungen

#193
Onkel Otto sitzt in der Badewanne
Profi - C#
von Kath
- 16.11.2017 um 15:26 Uhr
Schreibe ein Programm, welches das Spiel "Onkel Otto sitzt in der Badewanne" simuliert. Dabei geht es darum, dass jeder der Spieler ein gefaltetes Blatt mit 6 aufgezeichnete Spalten vor sich hat und in einer etwas eintragen muss. Danach wird das Blatt weitergereicht und der nächste Spieler füllt die nächste Spalte aus, solange bis keine mehr frei ist; dann werden die enstandenen Sätze vorgelesen.
Zur Vereinfachung kann jeder Spieler jeweils nacheinander ein Wort eingeben in seinem Client. Die eingegebenen Worte sollen an einen Server geschickt, dem jeweiligen Spiel ( jedes gestartete Spiel soll einen anderen Namen bekommen ) zugeordnet und anschließend die vollständigen Sätze an alle Clients zurückschicken, die an dem jeweiligen Spiel teilgenommen haben.
Designvorschlag für Homescreen: siehe Anhang
Aufgabe: Schreibe den Code für den Client und für den Server!
Zur Vereinfachung kann jeder Spieler jeweils nacheinander ein Wort eingeben in seinem Client. Die eingegebenen Worte sollen an einen Server geschickt, dem jeweiligen Spiel ( jedes gestartete Spiel soll einen anderen Namen bekommen ) zugeordnet und anschließend die vollständigen Sätze an alle Clients zurückschicken, die an dem jeweiligen Spiel teilgenommen haben.
Designvorschlag für Homescreen: siehe Anhang
Aufgabe: Schreibe den Code für den Client und für den Server!
#1

von hollst (13980 Punkte)
- 03.12.2017 um 17:23 Uhr

using System; using System.Windows; using System.Windows.Controls; namespace onkel_otto_aufgabe_193 { public partial class MainWindow : Window { static string NL = Environment.NewLine; public MainWindow() { InitializeComponent(); this.TBox_Regeln.Text = string_regeln; init_tb_content(); this.Label0.Content = string_lable_content[0]; this.Label1.Content = string_lable_content[1]; this.Label2.Content = string_lable_content[2]; this.Label3.Content = string_lable_content[3]; } string[] string_tb_content = new string[5]; static TextBox[] tb = new TextBox[5]; void init_tb_content() { string_tb_content = new string[5]; tb[0] = this.textBox0; tb[1] = this.textBox1; tb[2] = this.textBox2; tb[3] = this.textBox3; tb[4] = this.textBoxResult; tb_index = 0; for (var i = 0; i < tb.Length; i++) { tb[i].Text = string.Empty; string_tb_content[i] = string.Empty; if (i != tb_index) tb[i].Visibility = Visibility.Hidden; else tb[i].Visibility = Visibility.Visible; } bt_neues_spiel.IsEnabled = false; bt_aufloesen.IsEnabled = false; tb[tb_index].Focus(); } string string_regeln = NL + "Es gibt mindestens zwei Spieler, am besten vier." + NL + NL + "Der erste schreibt ins erste Textfeld ein (vielleicht auch zusammengesetztes) Subjekt, z. B." + NL + "\"Onkel Otto\"" + NL + "dann drückt er den nächstes-wort-BUTTON, das Spiel geht an Spieler #2 über." + NL + NL + "Dieser schreibt in sein Textfeld ein gebeugtes Verb (z. B. \"plätschert\") und drückt anschließend ebenfalls den " + "nächstes-wort-BUTTON." + NL + NL + "Es geht weiter mit einem Prädikat (z. B. \"lustig\"), anschließend wieder nächstes-wort-BUTTON." + NL + NL + "Abschließend kommt ein (ev. auch zusammengesetztes) Objektiv, wie z. B. \"in der Badewanne\"." + NL + NL + NL + "Wichtig ist, dass kein Spieler sehen kann, was ein anderer geschrieben hat." + NL + NL + NL + "Mit dem auflösen-BUTTON wird der so konstruierte und oft recht komische Satz allen angezeigt."; string[] string_lable_content = new string[] { "SUBJEKT" + NL + NL + "z. B.:" + NL + NL + "Onkel Otto" + NL + "Tante Emma" + NL + "Harry" + NL +"...", "(gebeugtes) VERB" + NL + NL + "z. B.:" + NL + NL + "plätschert" + NL + "durchquert" + NL + "...", "PRÄDIKAT" + NL + NL + "z. B.:" + NL + NL + "lustig" + NL + "gestresst" + NL + "...", "OBJEKT" + NL + NL + "z. B.:" + NL + NL + "in der Badewanne" + NL + "beim Hasen" + NL + "..." }; int tb_index = 0; private void bt_neues_spiel_Click(object sender, RoutedEventArgs e) { init_tb_content(); this.bt_neues_spiel.IsEnabled = false; this.bt_aufloesen.IsEnabled = false; this.bt_naechstes_wort.IsEnabled = true; } private void bt_naechstes_wort_Click(object sender, RoutedEventArgs e) { if ((tb_index < tb.Length - 1) && (string_tb_content[tb_index] != string.Empty)) { string string_end = " "; if (tb_index == string_tb_content.Length - 2) string_end = "."; string_tb_content[string_tb_content.Length - 1] += string_tb_content[tb_index] + string_end; tb_index++; for (var i = 0; i < tb.Length - 1; i++) { if (i != tb_index) tb[i].Visibility = Visibility.Hidden; else tb[i].Visibility = Visibility.Visible; } tb[tb_index].Focus(); if (tb_index < tb.Length - 1) { this.bt_neues_spiel.IsEnabled = false; this.bt_aufloesen.IsEnabled = false; } else { this.bt_aufloesen.IsEnabled = true; this.bt_naechstes_wort.IsEnabled = false; } return; } MessageBox.Show("es ist nichts eingetragen!"); tb[tb_index].Focus(); } private void textBox0_LostFocus(object sender, RoutedEventArgs e) { string_tb_content[tb_index] = tb[tb_index].Text; } private void bt_aufloesen_Click(object sender, RoutedEventArgs e) { tb[tb.Length - 1].Text = string_tb_content[string_tb_content.Length - 1]; tb[tb.Length - 1].Visibility = Visibility.Visible; this.bt_neues_spiel.IsEnabled = true; } } }

<Window x:Class="onkel_otto_aufgabe_193.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:onkel_otto_aufgabe_193" mc:Ignorable="d" Title="Onkel Otto" Height="400" Width="800" FontFamily="Courier New" WindowStartupLocation="CenterScreen" ResizeMode="NoResize"> <Grid> <TabControl x:Name="tabControl" Margin="-1,0,0,0" TabStripPlacement="Bottom"> <TabItem Header=" spiel "> <Grid Background="#FFE5E5E5"> <Grid.RowDefinitions> <RowDefinition Height="150"/> <RowDefinition Height="25"/> <RowDefinition Height="80"/> <RowDefinition Height="80"/> <RowDefinition/> </Grid.RowDefinitions> <Grid x:Name="grid2" Margin="0,0,10,0" Grid.Row="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> <Label x:Name="Label0" Grid.Column="0" Margin="10,20,0,0" /> <Label x:Name="Label1" Grid.Column="1" Margin=" 5,20,0,0" /> <Label x:Name="Label2" Grid.Column="2" Margin="5,79,0,-59" /> <Label x:Name="Label3" Grid.Column="3" Margin=" 5,20,0,0" /> </Grid> <Grid x:Name="grid1" Margin="0,0,10,0" Grid.Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> <TextBox x:Name="textBox0" Margin="10,0,0,0" Grid.Column="0" TextWrapping="Wrap" Text="TextBox" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Height="28" LostFocus="textBox0_LostFocus" FontWeight="Bold"/> <TextBox x:Name="textBox1" Height="28" Grid.Column="1" TextWrapping="Wrap" Text="TextBox" Margin="5,0,0,0" LostFocus="textBox0_LostFocus" FontWeight="Bold"/> <TextBox x:Name="textBox2" Height="28" Grid.Column="2" TextWrapping="Wrap" Text="TextBox" Margin="5,0,0,0" LostFocus="textBox0_LostFocus" FontWeight="Bold"/> <TextBox x:Name="textBox3" Height="28" Grid.Column="3" TextWrapping="Wrap" Text="TextBox" Margin="5,0,0,0" LostFocus="textBox0_LostFocus" FontWeight="Bold"/> </Grid> <StackPanel Height="32" Margin="10,25,0,0" Grid.Row="2" Width="492" Orientation="Horizontal"> <Button x:Name="bt_neues_spiel" Content=" neues spiel " Margin="5" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Center" VerticalAlignment="Center" Click="bt_neues_spiel_Click"/> <Button x:Name="bt_naechstes_wort" Content=" nächstes wort " Margin="50,5,5,5" Padding="1" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Center" VerticalAlignment="Center" Click="bt_naechstes_wort_Click"/> <Button x:Name="bt_aufloesen" Content=" auflösen " Margin="50,5,5,5" Padding="1" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" HorizontalAlignment="Center" VerticalAlignment="Center" Click="bt_aufloesen_Click"/> </StackPanel> <TextBox x:Name="textBoxResult" Margin="10,10,10,3" Grid.Row="3" TextWrapping="Wrap" Height="28" FontWeight="Bold" FontSize="24" FontStyle="Italic"/> </Grid> </TabItem> <TabItem Header=" regeln "> <Grid Background="#FFE5E5E5"> <TextBox x:Name="TBox_Regeln" Margin="5" TextWrapping="Wrap" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"/> </Grid> </TabItem> </TabControl> </Grid> </Window>
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1