Entwickler-Ecke
Sonstiges (Delphi) - Übungsaufgabe gesucht
IhopeonlyReader - Mi 15.05.13 17:00
Titel: Übungsaufgabe gesucht
guten Tag,
da ich Selbstbeibringer bin, suche ich natürlich auch einige Übungsaufgaben..
Aufgaben wie: Minesweeper, TowerDefense, RSA-Verschlüsselung, Chats, Uhren, Extra-Task-Manager, Herunterfahr-bots, PrimzahlenEnumeratoren, PrimzahlSiebe...
die oben genannten sind nur ein Teil der "Übungen" die ich bis jetzt gemacht habe ;)
Kennt ihr "Übungen" die man gemacht haben MUSS ?
oder irgendwas woran ihr euch immer gerne mal dransetzt?
ich suche neue Herausforderungen und würde mich über tolle Vorschläge freuen :)
(Bitte schreibt für euer Übungsprojekt eine Überschrift, eine kurze Beschreibung und ggf. eine Info)
Beispiel:
Zitat: |
Minesweeper
Beschreibung: Es werden X- Minen auf einem 2D- quadratischen Spielfeld platziert
Klickt man auf ein Feld, so erscheint die Anzahl der Minen im drekten Umfeld (9Kästchen - Eigene=8)/eine Mine.. ist es eine Mine, so hat der Spieler
verloren. Ist es eine Zahl mit dem Wert 0 (Keine Mine im direkten Umfeld) werden alle Felder im direkten Umfeld aufgedeckt (ist das aufgedeckte Feld
wieder ein 0er- Feld, so wird hiervon wiederum das Umfeld aufgedeckt)
Mit rechtsklick auf ein Feld, soll ein '?' oder '!' oder gar nichts erscheinen.
Wenn alle Zahlen-Felder aufgedeckt und alle MinenFelder mit einem '!' markiert sind, hat der Spieler gewonnen
Info: Die Anzahl der Felder und die Anzahl der Minen soll anzugeben sein
Die einzelnen Felder sollen ebenfalls größenverstellbar sein (da bei einem 20x20 Feld die Felder sonst zu klein sind, benutze hierzu am besten eine Trackbar)
(BeispielLösung zum Beispiel im Anhang)
|
Delete - Mi 15.05.13 18:30
- Nachträglich durch die Entwickler-Ecke gelöscht -
IhopeonlyReader - Mi 15.05.13 20:36
Taschenrechner habe ich schon.. Mein Taschenrechner ist spezialisiert aufs geteilt-rechnen. Es kann x-nachkommastellen (ohne e) angeben..
Textverarbeitung? Was soll ich wie verändern? Ich habe bereits Verschlüsselung und einen HTML-Editor programmiert..
Mathematiker - Mi 15.05.13 20:41
Hallo,
IhopeonlyReader hat folgendes geschrieben : |
Kennt ihr "Übungen" die man gemacht haben MUSS ? |
Dazu gehört auf jeden Fall die schnelle(!) Erzeugung von Mandelbrotmengen inkl. eines Zooms auf kleine Bereiche. Evtl. auch mit einer Rotation der Farben.
Weiterhin: Simulation einer Turing-Maschine, des Game of Life und anderer Zellularautomaten.
Dinge, die ich selbst mal machen wollte, aber noch nicht versucht habe, sind z.B. die Erzeugung von hyperbolischen Parkettierungen in der Art von M.C.Escher, Huffman-Kodierung von Daten, Darstellung unscharfer Mengen (Fuzzy-Logik), Simulation von Halb- und Volladder usw.
Beste Grüße
Mathematiker
Delete - Mi 15.05.13 21:05
- Nachträglich durch die Entwickler-Ecke gelöscht -
IhopeonlyReader - Mi 15.05.13 21:22
@Mathematiker danke sowas hab ich gesucht :)
Fruhlingsrolle Quadratische Gleichung lösen ist kein Problem.. Allgemein sind Erweiterungen des Taschenrechners zu einfach..
*.doc zu bearbeiten hab ich noch nicht gemacht, werde ich mir auch anschauen :)
jaenicke - Do 16.05.13 09:35
IhopeonlyReader hat folgendes geschrieben : |
Fruhlingsrolle Quadratische Gleichung lösen ist kein Problem.. Allgemein sind Erweiterungen des Taschenrechners zu einfach.. |
Auch das symbolische Differenzieren z.B.? ;-)
IhopeonlyReader - Do 16.05.13 18:35
also "allgemeine Ableiten" ?
bei einfachen Additionen/ Subtraktionen kein Problem.. aber sobald es an Produktregel etc. geht, dann müsste ich das ganze in Einzelteile zerlegen etc. wäre eine gute Übung :)
Als mathematische Erweiterung für den Taschenrechner habe ich bereits eine Matrizen "Schritt für Schritt" lösen lassen.. Multiplizieren habe ich noch nicht, aber ich denke das wäre auch kein Problem :)
jaenicke - Fr 17.05.13 11:23
IhopeonlyReader hat folgendes geschrieben : |
bei einfachen Additionen/ Subtraktionen kein Problem.. aber sobald es an Produktregel etc. geht, dann müsste ich das ganze in Einzelteile zerlegen etc. wäre eine gute Übung :) |
Um genau zu sein musst du einen Baum aufbauen, die Ableitungsregeln darauf anwenden, zusammenfassen falls möglich und dann das ganze wieder als String zusammenbauen.
Schwierig wird es dann, wenn man das umgekehrt machen will, denn symbolisch Integrieren ist natürlich viel komplizierter... da gibt es auch nicht so viele Tools, die das können (MatLab z.B.).
Martok - Sa 18.05.13 15:15
jaenicke hat folgendes geschrieben : |
Um genau zu sein musst du einen Baum aufbauen, die Ableitungsregeln darauf anwenden, zusammenfassen falls möglich und dann das ganze wieder als String zusammenbauen. |
Und das ist durchaus spannend: du brauchst einen Parser, um den Baum zu bekommen, dann etwas Pattern Matching und wenn du dann die Ergebnisse auch noch schön darstellen willst, könnte man noch Schriftsatz betreiben. Da wärst du auf jeden Fall eine ganze Weile beschäftigt, und es gibt viel zu lernen :zustimm:
jaenicke hat folgendes geschrieben : |
Schwierig wird es dann, wenn man das umgekehrt machen will, denn symbolisch Integrieren ist natürlich viel komplizierter... da gibt es auch nicht so viele Tools, die das können (MatLab z.B.). |
Matlab ist jetzt wirklich das denkbar schlechteste Beispiel ;-)
Das Beste ist Maple, was irgendwie so 95% aller Ausdrücke integrieren kann, dann kommt Mathematica, dann sehr lange nix und dann irgendwo Matlab, so ungefähr auf Mathematikstudentenniveau (also schon ordentlich, aber bei Weitem nicht alles). Unter anderem, weil Symbolics auch gar nicht so sehr der Fokus von Matlab sind, die sind da eher nachträglich drangefummelt.
Delete - So 19.05.13 11:21
HTML-RTF-Wandler
Wie wär's mit einer Unit, die aus HTML-Dateien RTF-Text macht, mit allen Textformatierungen und Farben etc.? Das Parsen von HTML-Dateien ist besonders dann anspruchsvoll, wenn kein korrektes HTML vorliegt, d.h., wenn HTML-Tags, nachdem sie geöffnet wurden, nicht wieder geschlossen werden. Ziel könnte sein, jede x-beliebige HTML-Seite im Internet als in einem RichEdit darzustellen, inklusive Grafik und Links.
Die guten HTML-RTF-Wandler kosten alle was, die kostenlosen taugen meiner Erfahrung nach nichts, weil sie fehleranfällig sind bzw. mit inkorrektem HTML nicht umzugehen wissen.
jaenicke - So 19.05.13 13:58
Die von SynEdit sah dafür eigentlich gar nicht so schlecht aus.
Nichtsdestotrotz ist ein solcher Parser eine gute, aber auch anspruchsvolle, Übungsaufgabe.
IhopeonlyReader - So 19.05.13 22:04
Ja, das sind gute und komplexe Übungsaufgaben :)..
Mir selbst ist noch folgendes eingefallen:
Kartenspiel :)
MauMau
31 bzw. Schwimmen
Bauernskat
21 bzw. 17 und 4 bzw. BlackJack
Doppelkopf
Und viele Erweiterungen in einer Anwendung..
Was haltet ihr davon?
IhopeonlyReader - So 19.05.13 22:11
Das Kartenspiel wird normalerweise als multiplayergame gespielt, aber für die ohne Freunde, wäre es natürlich nützlich alleine spielen zu können.. Somit wäre es ebenfalls eine Herausforderung Bots für die einzelnen Spiele in einzelnen Schwierigkeiten zu programmieren.
Einzustellen gäbe es: Kartenzählfähigkeit
Vorberechnen
Oder auf gut Glück
Mit oder ohne automatisches schummeln verhindern
IhopeonlyReader - Mo 20.05.13 21:45
Haltet ihr ein Kartenspiel für ein gutes ÜbungsProjekt?
Ein weiteres ÜbungsProjekt:
Datenverwaltung / accountdaten Verwaltung in einem tbinarytree
( ascii Code des ersten Zeichens des Benutzernamen als Orientierung)
FinnO - Mo 20.05.13 23:45
Eine Skat-API, die die Regeln kapselt und eine Schnittstelle für KIs in Form von DLLs o.ä. anbietet. Dann kannst du in der EE einen Wettbewerb ausschreiben ;)
IhopeonlyReader - Di 21.05.13 23:16
Du meinst, wenn ich es schaffe einen bot für skat zu programmieren wäre das etwas neues und hoch angesehenes?
Wobei: ließ dir mein Post mit beinhalteten spielen nochmal an, skat findest du dort nicht :D aber bauernskat.. Evt lern ixh auch noch skat und Programmiere eben nen ki-Bot.. Vielleicht NACH den anderen Spielen ;)
Mathematiker - Mi 22.05.13 21:25
Hallo,
IhopeonlyReader hat folgendes geschrieben : |
ließ dir mein Post mit beinhalteten spielen nochmal an, skat findest du dort nicht :D aber bauernskat.. Evt lern ixh auch noch skat und Programmiere eben nen ki-Bot.. |
Da schaudert es mich aber. :eyecrazy:
Bauernskat und Skat haben aber absolut nichts mit einander zu tun!
Wenn Du noch kein Skat kannst, dann lass einen Programmierversuch lieber. Skat ist nicht einfach ein Spiel, Skat ist Kunst! :mahn:
Alle Skat-Programme, die mir bisher unter die Finger gekommen sind, haben in der Praxis jämmerlich versagt.
Außerdem spielt man Skat immer(!) mit guten Freunden (+ entsprechende Getränke :beer: ) und niemals mit einer seelenlosen Maschine.
Beste Grüße
Mathematiker
IhopeonlyReader - Mi 22.05.13 21:29
'tschuldigung, aber ich dachte man liest aus dem satz
"EVT lern ich auch noch skat" und "programmiere EBEN nen ki-bot"
die Ironie raus :D aber ok... aber und in Bauernskat kommt nun mal Skat vor :D deshalb habe ich das als Beispiel angeführt...
Ich hatte nicht vor Skat mit einzuprogrammieren ;)
wobei.. wenn du meinst es sei eine Kunst, könnte ich mir echt überlegen das mal zu lernen^^
Mathematiker - Mi 22.05.13 21:42
Hallo,
das ist zwar jetzt wieder vollkommen Off-Topic, aber
IhopeonlyReader hat folgendes geschrieben : |
wenn du meinst es sei eine Kunst, könnte ich mir echt überlegen das mal zu lernen^^ |
Skat ist Kunst und Psychologie.
Ein erfolgreicher Skatspieler "liest" aus dem Verhalten seiner Mitspieler die eigene Strategie heraus. Dazu kommt noch, dass man hunderte (tausende?) Spiele absolviert haben muss, um die notwendige Erfahrung zu besitzen. Das alles kann kein Computer.
Und außerdem, wie schon oben gesagt, spielt man mit Freunden. Erst dadurch wird es zum Erlebnis.
Zusätzlich muss jeder, der ein Skatspieler sein will, einmal in seinem Leben nach Altenburg in's Skatmuseum "pilgern". :wink: Und ein richtiger Skatspieler ist man erst dann, wenn man einen "Grand Ouvert" hatte, der natürlich sofort in einem schönen Rahmen mit Angabe von Datum und Mitspielern für die Nachwelt aufbewahrt wird.
Ich hatte schon zwei! :D
Beste Grüße
von einem "glühenden" Skatspieler
Nersgatt - Do 23.05.13 11:43
Ich vermisse in Deiner Auflistung alles was mit Datenbanken zu tun hat. Den Umgang damit sollte man lernen, find ich.
Adressverwaltungen, CD-Verwaltung, Bilderverwaltung, Strafzettelverwaltung :D , etc...
IhopeonlyReader - Do 23.05.13 19:47
Nersgatt hat folgendes geschrieben : |
Ich vermisse [...] Datenbanken |
Stimmt :D das habe ich noch nicht wirklich gemacht (ok, records für "Bundesjugendspiele" oder was man so kennt schon, aber mit "größeren" Datenbanken noch nicht ;)
was könnt ihr mir da Vorschlagen? (nicht als Projekt, da hat
Nersgatt gute Beispiele genannt, ich meinte eher an Datenbanken (MySQL, Excel)
wobei es sicherlich entsprechende Datenbanken auf etwas spezialisiertes gibt oder?
Excel für Zahlen
MySQL für Strings?
Nersgatt - Fr 24.05.13 07:54
Excel ist keine Datenbank. :mahn:
Welche DB zu wählst ist zum lernen praktisch egal, würde ich sagen. Es gibt ja schon 1000-welche-Datenbank-soll-ich-nehmen-Threads. Letztlich kommt es aber meiner Meinung nach drauf an, dass Du lernst, wie man die Tabellen strukturiert, was sind die Normalformen und wie setze ich sie um, etc. Und das kannst Du praktisch jeder relationalen Datenbank lernen. Nur nicht Excel! :mrgreen:
Und an den zu speichernden Datentypen kannst Du das auch nicht fest machen. Denn das wird immer gemischt sein.
IhopeonlyReader - Fr 24.05.13 15:25
ok :D..
Zählt als Datenverwaltung (Datenbanken) auch TBinaryTree, verkette Liste, Dyn.Arrays, records?
damit habe ich schon gearbeitet :)
oder geht es um den "übergreifeneden" Sinn, also dass z.B. eine Datenbank auf einem Server liegt und ich diese dann entsprechend ändere UND vor doppeltem Zugriff schütze
Nersgatt - Fr 24.05.13 15:44
Das sind im weiteren Sinne natürlich auch Datenbanken. Ich wollte aber vielmehr auf die relationalen Datenbanken hinaus. Denn die sind sehr verbreitet, sobald die Datenstruktur etwas komplexer wird. Auch auf Einzelplatzsystemen mit nur einem User. Such dir ein Tutorial zum Thema Normalformen (min. bis zur 3. Normalform). Dann kannst Du damit ja mal ein Projekt umsetzen. Und wenn Du das hast, kannst Du mal überlegen, wie Du das Projekt Mehrbenutzerfähig machst. Was passiert, wenn 2 Nutzer den selben Datensatz bearbeiten, was sind Transaktionen, etc.
Delete - Sa 25.05.13 04:09
IhopeonlyReader hat folgendes geschrieben : |
ich meinte eher an Datenbanken (MySQL, Excel) |
Aus meiner eigenen Erfahrung kann ich dir den Einstieg mit MS-Access empfehlen, wenn du über eine entsprechende MS-Office-Software verfügst, in der Access enthalten ist. Das ist schön übersichtlich, du kannst dir in Access leicht deine eigene Datenbank zusammenstellen und mit den dbGo-Komponenten aus einem Delphi-Programm darauf zugreifen. Zudem bietet Access die Möglichkeit, einen leichten Zugang zu SQL (
Structured
Query
Language), der meistverwendeten Datenbanksprache, zu finden, weil man alle Manipulation der Datenbank in Access als SQL-Script ausgeben kann.
Ansonsten nimmst du
Firebird [
http://www.firebirdsql.org/] (DP) und
Zeos [
http://sourceforge.net/projects/zeoslib/] (Zugriff) zum Anfangen. Um eine Firebird-Datenbank zu erstellen, verwendest du am besten die kostenlose Personalversion von
IbExpert [
http://www.heise.de/download/ibexpert-1128895.html].
Wichtig: Laß die Finger von der BDE (
Borland
Database
Engine). Zwar erleichtert die BDE den Umgang mit Datenbanken, hat aber etliche Nachteile:
1. Wer mit BDE Datenbankanwendungen entwickelt, lernt nicht den nativen Umgang mit Datenbanken, sondern wird quasi verwöhnt, indem er sich alles schnell zusammenklicken kann.
2. Die BDE arbeitet bei ernsthaften Anwendungen nicht wirklich zuverlässig.
3. Die BDE ist total veraltet und wird seit gut 10 Jahren nicht mehr weiterentwickelt.
IhopeonlyReader - Di 28.05.13 21:59
Ich fasse mal zusammen:
[von euch:]
-1 Datenbanken
-2 HTML- RTF- Wandler
-3 Taschenrechner- Erweiterungen (Funktionen aufstellen können, Ableiten, Integrieren)
-4 Mandelbrotmengen
-5 Erzeugung von hyperbolischen Parkettierungen (nach M.C. Escher)
-6 Kodierung von Daten (Huffman)
-7 Darstellung unscharfer Mengen (Fuzzy-Logik)
[von mir:]
- Kartenspielsammlung (MauMau, 31/Schwimmen, BlackJack) (ggf. erweiterbar mit: Bauernskat, Doppelkopf...)
- Account (ohne Datenbank) mit einem abgewandelten TBinaryTree (TTernaryTree) nach dem ASCII-Code der einzelnen Chars (Zeichen des Strings) ;)
Womit werde ich mich vorerst beschäftigen?
mit all meinen "eigenen" Übungen und
von euren: 1, 6
versuchen werde ich: 7, 4, 3
zu den fehlenden:
2: wenn, dann nur OHNE Grafiken.. nur der formatierte Text mit Farben etc. ;)
(aber ich denke, dass wäre keine größere Herausforderung nur viel "Unterteilarbeit" (alle Befehle mit einprogrammierne etc.) (der befehl pos übernimmt viel arbeit :D)
5: Erkennung ist ja schon schwer (an einem Pixel beginnen und zu allen seiten gehen und farbe checken, wenn gleich dann zu muster hinzufügen).. aber Erzeugung WOW...
Evt wenn ich es hinkriege einfache "bilder" zu vergleichen (Pos für bilder^^)
P.S: Ich habe mal paar "THX" verteilt ;)
IhopeonlyReader - Do 30.05.13 11:54
Aber natürlich :) die hatte Mathematiker auch schon erwähnt :)
Ich werde mich gleich mal an die Ameise machen ;)
IhopeonlyReader - Do 30.05.13 15:41
eich habe die Ameise fertig :)
Allerdings mit einem kleinen Fehler, den ich noch nicht gefunden habe :/
Fehler: wenn die Ameise den Spielfeldrand erreicht, so springt sie :D Obwohl das eigentlich nicht möglich ist :-? naja ich werde den Fehler noch suchen :rofl:
Vorerst habe ich den Fehler behoben, indem ich das Spielfeld von Anfang an auf 60*80 Felder gesetzt habe :evil: (die sind zwar ca. ab Schritt 11000 auch zu wenig, aber bis dahin ist die Ameise ja "fertig" )
Anwendung im Anhang, viel Spaß ;-)
Edit 30.05 15:55: Flackern behoben (DoubleBuffered vergessen)
Edit 30.05 19:10: Fehler behoben ( Feld ist nun minimal groß )
Edit 30.05 19:40: Startpunkt ist nun mit Lime umrandet
und Ameisenposition ist mit Rot umrandet
Edit 30.05 20:15: Startposition ist nun zu sehen, auch wenn Ameise darauf ist ;)
IhopeonlyReader - Do 30.05.13 19:10
So der Fehler ist gefunden :)
(Nein ich habe keine 4 Stunden gesucht :lol:)
die Version ist aktualisiert.. als nächstes kommt noch
Startpunkt wird Gelb umrandet
und Position der Ameise rot umrandet ;-)
vorerst die die Version im Post über mir aktualisiert
//Auch das wäre erlegigt.. + jaenickes hinweis
jaenicke - Do 30.05.13 19:23
Du hast Position des Formulars auf poDesktopCenter gestellt.
Folge: Bei z.B. zwei Monitoren wird das Fenster genau auf der Kante zwischen den Monitoren dargestellt.
Du meintest wohl eher poScreenCenter. ;-)
IhopeonlyReader - Do 30.05.13 19:40
danke für den Hinweis Jaenicke :)
Da ich nur einen Bildschirm aktuell verwende fällt mir das nicht so auf :D
Ist direkt nach deinem Hinweis verbessert worden :)
IhopeonlyReader - Do 30.05.13 20:20
Was findet ihr könnte man (direkt an diesem Beispiel - Zellularautomat_Ameise - hinzufügen?
- mehrere Ameisen auf demselben Feld? oder wie ..
Ralf Jansen - Do 30.05.13 20:56
Was man hinzufügen könnte?
a.) Die Bewegungsregel einstellbar machen (das ist doch gerade das spannende, sich überraschen zu lassen was eine kleine Regeländerung für Auswirkungen hat)
b.) nicht nur Schwarz Weiß sondern eine Palette von n Farben die durchlaufen werden
c.) die Ameise tatsächlich automatisch laufen lassen und nicht immer weiter klicken zu müssen.
d.) Das enstandende Bild exportieren können
IhopeonlyReader - Fr 31.05.13 15:54
d) ist erledigt ;)
Ralf Jansen hat folgendes geschrieben : |
c.) die Ameise tatsächlich automatisch laufen lassen und nicht immer weiter klicken zu müssen.
|
Wie meinst du das? Du kannst sie auf Schritt X oder um X schritte weiter setzten?
oder meinst du
"Weiter"
Warte 10 sek
//von vorne
oder ohne zeit?
Ralf Jansen - Fr 31.05.13 21:29
Einfach automatisch endlos Schritte ausführen lassen nach der gerade eingestellten Regel. Je nach Bewegungsregel passiert ja eh erst was nach vielen millionen Schritten (Der Übergang von Chaos zur irgendwas regelmäßigem).
Beispiel [
http://yahuxo.de/ameise.html]
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!