|
![]() |
|
Registriert seit: 24. Aug 2012 103 Beiträge FreePascal / Lazarus |
#1
In einem Projekt immer das wichtigste zuerst. Gut, du hast schon viele Ideen gesammelt. Aber das Hauptprogramm ist das Spiel selbst. Deshalb mach zuerst das Memory. Die zwölf Kärtchen, anklicken, umdrehen, vergleichen, zählen und zwar als Einzelspieler. Damit bist du schon genug beschäftigt. (Wenn das nicht funktioniert, ist alles andere sowieso umsonst gewesen.) Mach die Kärtchen ruhig erstmal an einer fixen Position, der Zufall kann später auch noch kommen. Das ist einfacher.
Danach könntest du über Mehrspieler, gegen Computer usw. nachdenken (Das funktioniert nur wenn der Einzelspieler schon läuft, und ist auch noch schwierig genug!). Menüführung, Login usw. ist hier das unwichtigste (und behandelt einen ganz anderen Teilaspekt). Man braucht es gar nicht, und falls man es wirklich will, kann man es am Schluss noch dazu machen. Auch wenn man im Programm zuerst in das Menü gehen würde, als zweites Einstellungen machen würde usw. ist das beim Programmieren andersrum. Das wichtigste zuerst. Deine Gesamtvorstellungen sind gut, aber über das Ziel hinausgeschossen. LG |
![]() |
XardasLP
(Gast)
n/a Beiträge |
#2
Tja, das da oben ist eine so genannte KOMPLEXAUFGABE bei uns.
Und das was wir jetzt aufgelegt bekommen haben steht in keiner Weise mit dem was wir können in Relation. 85% Unbekannte Sachen herausfinden erscheint mir schon ziemlich krass.
Delphi-Quellcode:
Werde ich denke sowieso machen, denn nur die angebliche Vollversion umfasst zufällige Spielfelder.
Mach die Kärtchen ruhig erstmal an einer fixen Position, der Zufall kann später auch noch kommen. Das ist einfacher.
Danach könntest du über Mehrspieler, gegen Computer usw. nachdenken (Das funktioniert nur wenn der Einzelspieler schon läuft, und ist auch noch schwierig genug!). Ich muss das ja alles machen, kann mich nicht beschrenken. Das ist gefordert und wie ich das mache interessiert den Typ nicht. Der meint statt Listbox.Items.Add ist Listbox.Lines.Add richtig... also richtige Gammellehrer wo wir Schüler so krass viel kernen - NICHT! |
![]() |
XardasLP
(Gast)
n/a Beiträge |
#3
An diesem Projekt haben wir auch nachdem wir Geschäftsmodelle, use-case Diagramme, Anwendungsdiagramme, Sequenzdiagramme usw. durchgegangen sind noch so 2-3x 90 Minuten gearbeitet.
Bei uns hat jeder SOOOOOOOOOOOOO optimale Vorraussetzungen dieses Spiel gut abzuschließen ![]()
Delphi-Quellcode:
Unit2:
unit Umain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; EditID: TEdit; ButtonND: TButton; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; RG: TRadioGroup; ButtonBA: TButton; ButtonSAVE: TButton; ButtonCLOSE: TButton; EditDS: TEdit; EditB: TEdit; EditLZ: TEdit; CB: TComboBox; EditmZ: TEdit; EditmR: TEdit; EditGz: TEdit; EditGza: TEdit; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; procedure ButtonBAClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ButtonNDClick(Sender: TObject); procedure RGClick(Sender: TObject); procedure ButtonSAVEClick(Sender: TObject); procedure ButtonCLOSEClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; liste: TStrings; anz: integer; implementation uses UDarlehen; {$R *.dfm} procedure TForm1.ButtonBAClick(Sender: TObject); begin EditDS.Enabled := False; EditB.Enabled := False; EditLZ.Enabled := False; CB.Enabled := False; Label3.Enabled := False; Label4.Enabled := False; Label5.Enabled := False; Label6.Enabled := False; Label7.Enabled := True; Label8.Enabled := True; Label9.Enabled := True; Label10.Enabled := True; EditGZ.Enabled := True; EditGza.Enabled := True; EditmR.Enabled := True; if (EditDS.Text = '') or (EditB.Text = '') or (EditLZ.Text = '') or (CB.Text = '') then begin EditDS.SetFocus; end else begin darlehen.set_DS(strtofloat(Editds.Text)); darlehen.set_BE(strtodate(EditB.Text)); darlehen.set_LZ(strtoint(EditLZ.Text)); darlehen.set_JZ(strtofloat(CB.Text)); case RG.ItemIndex of 0: begin EditMR.Text := formatfloat('0.00',darlehen.get_mon_Raten); EditMZ.Clear; EditGZ.Text := formatfloat('0.00',darlehen.get_ges_zinsen); EditGza.Text := formatfloat('0.00',darlehen.get_ges_zahlung); end; 1: begin EditMZ.Text := formatfloat('0.00',darlehen.get_mon_Zinsen); EditMR.Text := ''; end; end; EditGz.Text := formatfloat('0.00', darlehen.get_ges_zinsen); EditGza.Text := formatfloat('0.00', darlehen.get_ges_zahlung); end; ButtonSave.Enabled := True; ButtonClose.Enabled := True; end; procedure TForm1.FormCreate(Sender: TObject); begin liste := TStringList.Create; end; procedure TForm1.ButtonNDClick(Sender: TObject); begin ButtonND.Enabled := False; EditID.Enabled := False; Label2.Enabled := False; EditDS.Enabled := True; EditB.Enabled := True; EditLZ.Enabled := True; CB.Enabled := True; Label3.Enabled := True; Label4.Enabled := True; Label5.Enabled := True; Label6.Enabled := True; if RG.ItemIndex = -1 then begin showmessage('Bitte Darlehensart auswählen! '); end else begin liste.LoadFromFile('darlehen.txt'); anz := + liste.Count + 1000; //showmessage(inttostr(anz)); EditID.Text := upcase(RG.Items[RG.ItemIndex][1]) + inttostr(anz); case RG.ItemIndex of 0: darlehen := TAnnuitaetendarlehen.create(Editid.Text); 1: darlehen := TEndfaelliges_Darlehen.create(Editid.Text); end; ButtonBA.Enabled := True; end; end; procedure TForm1.RGClick(Sender: TObject); begin ButtonND.Enabled := True; Label2.Enabled := True; end; procedure TForm1.ButtonSAVEClick(Sender: TObject); begin liste.Add(darlehen.speichern); liste.SaveToFile('darlehen.txt'); showmessage('Daten erfolgreich gespeichert!'); liste.Free; darlehen.Free; end; procedure TForm1.ButtonCLOSEClick(Sender: TObject); begin close; end; end.
Delphi-Quellcode:
unit UDarlehen;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Math; type TDarlehen = class protected Ident: string; Darlehensschuld: real; Beginn: TDateTime; Laufzeit: integer; Jahreszins: real; A: real; public constructor create; procedure set_DS (Wert: real); procedure set_BE (Wert: TDateTime); procedure set_LZ (Wert: integer); procedure set_JZ (Wert: real); function get_mon_Zinsen(): real; virtual; function get_mon_Raten(): real; virtual; function get_ges_zinsen(): real; virtual; function get_ges_zahlung(): real; function speichern(): string; end; TAnnuitaetendarlehen = class(TDarlehen) private public constructor create(id: string); function get_mon_Raten(): real; override; function get_ges_Zinsen(): real; override; end; TEndfaelliges_Darlehen = class(TDarlehen) public constructor create(id: string); function get_mon_Zinsen(): real; override; function get_ges_Zinsen(): real; override; end; var darlehen: TDarlehen; implementation //*-----*//TDarlehen//*-----*// constructor TDarlehen.create; begin // end; procedure TDarlehen.set_DS (Wert: real); begin Darlehensschuld := wert; end; procedure TDarlehen.set_BE (Wert: TDateTime); begin Beginn := wert; end; procedure TDarlehen.set_LZ (Wert: integer); begin Laufzeit := wert; end; procedure TDarlehen.set_JZ (Wert: real); begin Jahreszins := wert; end; function TDarlehen.get_mon_Zinsen(): real; begin // end; function TDarlehen.get_mon_Raten(): real; begin // end; function TDarlehen.get_ges_zinsen(): real; begin // end; function TDarlehen.get_ges_zahlung(): real; begin result := Darlehensschuld + get_ges_zinsen; end; function TDarlehen.speichern(): string; begin result := Ident + '#' + formatfloat('0.00',darlehensschuld) + '#' + datetostr(Beginn) + '#' + inttostr(Laufzeit) + '#' + formatfloat('0.00',jahreszins) + '#' + formatfloat('0.00',get_mon_zinsen) + '#' + formatfloat('0.00',get_mon_raten) + '#' + formatfloat('0.00',get_ges_zinsen) + '#' + formatfloat('0.00',get_ges_zahlung); end; //*-----*//TAnnuitaetendarlehen//*-----*// constructor TAnnuitaetendarlehen.create(id: string); begin Ident := id; end; function TAnnuitaetendarlehen.get_mon_Raten(): real; begin result := Darlehensschuld * power(1 + Jahreszins/1200, Laufzeit) *(Jahreszins/1200) /(power(1 + Jahreszins/1200, Laufzeit) -1); //Power errechnet aus Base und einen beliebigen Wert die Potenz. Wird als //Exponent ein Bruchwert oder ein Wert größer MaxInt angegeben, //muss Base größer als 0 sein. end; function TAnnuitaetendarlehen.get_ges_Zinsen(): real; begin result := get_mon_Raten * laufzeit - Darlehensschuld; end; //*-----*//TEndfaelliges_Darlehen//*-----*// constructor TEndfaelliges_Darlehen.create(id: string); begin Ident := id; end; function TEndfaelliges_Darlehen.get_mon_Zinsen(): real; begin result := get_ges_Zinsen end; function TEndfaelliges_Darlehen.get_ges_Zinsen(): real; begin result := Darlehensschuld * power(1 + Jahreszins/100 {wegen Prozent}, Laufzeit/12) - Darlehensschuld end; end. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |