Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Webgamers. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Mina

Profi

  • »Mina« ist der Autor dieses Themas

Beiträge: 399

Danksagungen: 603

  • Nachricht senden

1

Dienstag, 7. April 2015, 07:02

Hippodora - Entwicklungsthread

[img]http://fs2.directupload.net/images/150809/iiimj8zh.png[/img]

[img]http://fs2.directupload.net/images/150809/t6ol2uqg.png[/img]

[img]http://fs1.directupload.net/images/150809/944l7zq5.png[/img]

[img]http://fs5.directupload.net/images/150929/88c3j429.png[/img]

Hallo liebe Community,


seit einer Weile bin ich nun schon am Werken und Basteln, weswegen sich inzwischen einiges verändert hat. Daher habe ich aus vielen verschiedenen Gründen beschlossen, eine neue, aktuellere Projektbeschreibung zu veröffentlichen. Einer war die geringe Aktualität, ein anderer die zunehmende "Vermüllung" des ursprünglichen Themas.

Die Vorgeschichte:
Vor inzwischen - nun, ich schätze - drei Jahren hatte eine italienische Freundin Interesse daran ein Pferdespiel zu programmieren, grundlegend wohl aufgrund der Frustration gegenüber zwei Browserspielen, die inzwischen sehr nach Gewinn orientiert sind und im anderen Fall sehr auf kleine Kinder (rosa Einhörner, regenbogenfarbene Pegasi und Co.).
Wir hatten keine gute Alternative gefunden und daher wollten wir sie selbst schaffen. Unsere Hauptmotivation war dabei: Kein Rosa, keine Einhörner und erst recht keine Pegasi.
Ältere, wenn auch pferdeverrückte Menschen mit einer Abneigung gegen grelle Farben oder mit einem Wunsch nach mehr Realitätsnähe sollten ebenso Pferdespielspaß bekommen.
Leider ist meine Freundin wieder ausgestiegen - nachdem sie kurz wieder dabei gewesen war, um erneut zu gehen. Somit ist das Spiel inzwischen mein persönliches Projekt.
Nach einem Jahr, in dem der bisherige Fortschritt fast auf Null zurückgesetzt wurde, aber ich meine Fähigkeiten in Bezug auf PHP vergrößert habe, geht es nun mit veränderter Planung und verändertem Konzept wieder weiter.

Das Spielprinzip:
- Pferdezucht mit realitätsnaher Farbgenetik und Talententwicklung
- Pferdepflege, Erziehen, Einreiten, Trainieren der Pferde auf über 50 verschiedene Arten
- Pferdehandel
- 12 verschiedene Pferdekrankheiten, Hufpflege
- Turniersystem basierend auf Leistungsklassen (E-S***) und Ligen
- Leitung eines Reithofs, Instandaltung der Anlagen
- Training des Reiters und erweitern der Fähigkeiten
- Rassezuchtgemeinschaften
etc.
Hinweis: Das Spiel wird Stück für Stück aufgebaut und bei erster spielbarer Version geöffnet. Mit der Veröffentlichung wird eine grundlegende Roadmap angelegt, die angibt, welche Details in welcher Reihenfolge hinzukommen werden. Zunächst wird es noch lange nicht alle 50 geplanten Trainingsmethoden geben, genausowenig alle Krankheiten, Items und Co., so ein Spiel benötigt viel Entwicklungszeit, und ich öffne es lieber früh und mit weniger Möglichkeiten als viel später. ;)

Die Programmierung:
Entwickelt wird das Spiel mit PHP 5.4+. Als Grundlage dient das Framework Laravel 5.1.

Das User Interface:
Baut auf HTML, CSS und JavaScript, wobei ich hier auf das verbreitete Framework jQuery zurückgreife. Mit AJAX möchte ich hier und da für bessere Interaktivität und weniger Ladezeiten sorgen.

Die Ausstattung:
Programmiert wird mit Netbeans und auch oft mit Notepad++, je nach Sprache und Anforderungen. Die Grafiken erstelle ich ebenso wechselhaft mit GIMP 2.9 und Photoshop CS2.
Vektoren werden mit Inkscape und Adobe Illustrator CS2 erstellt. Zur Unterstützung habe ich mir ein Wacom Intuos gekauft, ich bin aber noch am Lernen. Für Beispiel-Grafiken siehe unten.
Beim Webdesign teste ich vor allem in Opera und Firefox, sowie Safari. Der Internet Explorer wird bis zu den beiden aktuellsten Versionen ignoriert, da die Leute, wenn sie moderne Webseiten wollen, gefälligst einen modernen Browser nutzen sollen, immerhin kostet es niemanden einen Cent die neue Version herunterzuladen.

Die finanzielle Orientierung:
Das Spiel soll kostenlos (kein Premium, keine Spezialwährungen, etc.) und sofern möglich auch an den meisten Stellen werbefrei sein (die Kosten sollten wieder reinkommen natürlich, ich möchte nicht verarmen), es ist also nicht kommerziell und ich will den Spielern eine Freude damit machen, ohne Zahlzwang.

Nachdem ich vor allem im IRC oft gefragt wurde, wie denn mein Entwicklungsstand ist, möchte ich die Frage recht detailliert beantworten, indem ich diesem ersten Beitrag eine Liste mit zu erledigenden Punkten und ihrem Bearbeitungsstatus anfüge.
Darunter ergänze ich eine genauere Spielbeschreibung, die ich erweitern werde, sofern etwas ergänzt oder geändert wird.


Entwicklungsstand (noch unvollständig):
Aufgabe
HTML
CSS
JS
PHP
MySQL
Account
Login
Registrierung
Spieldetails wählen
Email bestätigen
Passwort vergessen
Einstellungen
Passwort ändern
Email ändern
Account löschen
Profil
Eigenes Profil anzeigen
Eigenes Profil ändern
Fremdes Profil ansehen
Reithof
Stallübersicht
Boxen ausmisten
Boxen einstreuen
Boxenbelegung
Boxenbelegung ändern
Weidenübersicht
Weiden abäpfeln
Weiden brach legen
Gras an säen
Stall bauen
Weideland kaufen
Pferd
Pferdeprofil
Trainingsseite
Zustand
Talente
Charakter
Trainingsstand
Dressurtraining
Geländespringen
Springtraining
Bodenarbeit
Ausritte
Spaziergänge
Einreiten
Erziehung
Krankheiten
Weidegang
Stallruhe
Striegeln
Hufe auskratzen
Füttern
Altern
Fortpflanzung
Ausrüstung



Details aus der Planung des Spiels (noch nicht ganz aktuell und unvollständig):


Zu den Pferden:
Eigenschaften des Pferdes:

Allgemeines:
Alter: Jahr/Monat/Woche → Natürlicher Tod: frühestens ab 21, spätestens ab 34
Größe: durch Rasse bestimmt und Zufall +/-5cm
Fellfarbe: Nach Genetik (der Realität nachgebildet, siehe Wikipedia Genetik der Pferdefarben)
Gewicht: Abhängig von Rasse und Größe, wird durch Fütterung beeinflusst

Zustand:
Kondition (0-5000)
Konstitution (0-5000)
Energie (0-5000)
Gesundheit (0-5000)
Hinweis: Zustand wird durch Training und Pflege, etc. erhöht und gesenkt.

Charakter:
Gelassenheit (-100 - +100) Bedingt durch Rasse und Zufall (+/- 20)
Temperament (-100 - +100) Bedingt durch Rasse und Zufall (+/- 10)
Aufmerksamkeit (-100 - +100) Bedingt durch Rasse und Zufall (+/- 10)
Gutmütigkeit (-100 - +100) Bedingt durch Rasse und Zufall (+/- 20)
Wird bei der Geburt errechnet und ändert sich danach nicht mehr.

Talent:
Intelligenz: Durch Genetik bestimmt, Grundgenetik mindestens 20
Springvermögen: Durch Genetik bestimmt, Grundgenetik mindestens 20
Durchlässigkeit: Durch Genetik bestimmt, Grundgenetik mindestens 20
Sprint: Durch Genetik bestimmt, Grundgenetik mindestens 20
Ausdauer: Durch Genetik bestimmt, Grundgenetik mindestens 20
Schritt: Durch Genetik bestimmt, Grundgenetik mindestens 20
Trab: Durch Genetik bestimmt, Grundgenetik mindestens 20
Galopp: Durch Genetik bestimmt, Grundgenetik mindestens 20
Wird bei Geburt aus den Werten der Eltern berechnet und ändert sich nicht mehr

Trainingspunkte:
Dressur: beginnt bei 0, kann 1000 erreichen.
Springen: beginnt bei 0, kann 1000 erreichen
Geländespringen: beginnt bei 0, kann 1000 erreichen
Wird durch das Training erhöht, beziehungsweise bei Fehlern und Krankheit gesenkt.

Eingeritten: 0-100%
Aktionen des Pferdes:
Allgemeines:
Füttern: Mit einer bestimmten Menge einer gewählten Futtersorte Füttern, + Energie, + Konstitution
Hufe auskratzen: keine Auswirkung, bei Vergessen am Folgetag - Gesundheit.
Striegeln: + Konstitution
Auf Weide bringen: Pferd weidet → + Menge des gefressenen Futters, + Energie, + Konstitution
Reiten:
Einreiten: Einreitwert um 5% erhöhen
Ausreiten: 0,5-1,5h ausreiten. + Kondition, + Dressur, - Energie

Reitunterricht:
Reitstunde (normal): - Energie, + Wissen für Reiter (unbegrenzt)
Reitstunde in Dressur: - Energie, + Dressur für Reiter (unbegrenzt) /Pferd (Maximal bis 100) - Geld
Reitstunde in Springen: - Energie, + Springen für Reiter (unbegrenzt) /Pferd (Maximal bis 100) - Geld
Reitstunde in Geländespringen: - Energie, + Geländespringen für Reiter (unbegrenzt) /Pferd (Maximal bis 100) - Geld

Training:
Dressur: Hierbei stehen mehrere Hufschlagfiguren zur Verfügung, die den Trainingswert des Pferdes abhängig von dem aktuellen Trainingswert beeinflussen.
=> Wenn die Figur zu schwer ist: - Konstitution, - Energie, - Dressur
=> Wenn die Figur genau richtig ist: - Energie, + Dressur, + Kondition
=> Wenn die Figur zu leicht ist: - Energie, + Konstitution

Springen: Hier können Parcours und einzelne Hindernisse trainiert werden. Hierbei gilt:
=> Der ganze Parcours zieht mehr Energie ab, als einzelne Hindernisse, ist aber effektiver
=> Die Anforderungen für den ganzen Parcours sind höher, die Dauer ist länger
=> Die einzelnen Sprünge sind wenig anstrengend, dafür nicht so effektiv wie Parcours, aber kürzer in der Dauer
=> Die Anforderungen für einzelne Sprünge sind etwas niedriger als beim Parcours
Des weiteren werden die Parcours und Sprünge mit einer bestimmten Hindernishöhe trainiert:
=> Wenn der Sprung/Parcours zu hoch/schwer ist: - Gesundheit, - Energie, - Springen
=> Wenn der Sprung/Parcours genau richtig ist: + Kondition, - Energie, + Springen
=> Wenn der Sprung/Parcours zu niedrig/leicht ist: - Energie, + Konstitution

Geländespringen: …hier müssen noch Ideen her!

Ereignisse/Sonderfälle des Pferdes:

Gewicht:
Pferd ist zu dünn: - Gesundheit
Pferd ist zu dick: - Gesundheit
Tod:
Pferd hat weniger als 20 Gesundheit: Pferd stirbt zu 10%.
Pferd ist zwischen 21 und 34: Pferd stirbt zu 0,05%
Pferd ist 34: Pferd stirbt zu 25%
Pferd wird krank:
Verschiedene Krankheiten, abhängig von der Art der Krankheit, ist ein Pferd für eine bestimmte Dauer erkrankt. Des weiteren ist wichtig:
- Gesundheit (täglich)
=> bei schweren Krankheiten Stallruhe, kein Training, Ausreiten oder Weidegang möglich
=> Tierarzt rufen: - Geld, + Gesundheit (täglich)

Fortpflanzung:
Pferd wird gedeckt: + Konstitution
Pferd deckt: - Energie, + Konstitution
Pferd ist trächtig: Dauer von 11 Monaten, ab 5 Monat kein Training, ab 8 Monat keine Ausritte
→ Benötigt mehr Futter
Geburt: - Kondition, + Konstitution, - Energie, - Gesundheit, - Geld

Pferd hat Fohlen:
Täglich: + Konstitution, - Kondition
→ Nur beim Fohlen Sichtbar: Zustand, Interieur
→ Benötigt mehr Futter
→ Fohlen ist 0 Monate alt: Stallruhe
=> Fohlen kann nicht separat verpflegt werden, alles passiert mit Mutter.
→ Fohlen ist 2 Monate alt: Weidegang.
→ Fohlen ist 4 Monate alt: 30 min Ausritte möglich.
→ Fohlen ist 5 Monate alt: 60 min Ausritte möglich.
→ Fohlen ist 6 Monate als: 1,5h Ausritte möglich
=> Bei Beginn des zweiten Lebensjahres wird das Fohlen von der Mutter separiert, Normalzustand
Pferd nimmt an Wettbewerb teil:
Keinen Einfluss auf Pferd, Zeit, etc., maximal 1 pro Woche, 4 pro Monat.
Teilnahmebeitrag: - Geld
Gewinn: + Geld, Ranglistenpunkte, etc.

Ausrüstung und Gegenstände des Pferdes:
Sattelzeug:
Zaumzeug: Verschiedene Trensen, etc.
Gebisse: Verschiedene Stärken
Sattel: Verschiedene Typen nach Disziplin
Sonstige Gegenstände:
Satteldecken, Gamaschen, Bandagen, Fliegenohren, Halfter, etc.

Infos zum Reiter, Reithof, und Co. folgen
»Mina« hat folgende Bilder angehängt:
  • Karotte.png
  • flower_yellow.png
  • Charlie.png
  • Fuchskl.jpg

Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von »Mina« (29. September 2015, 16:09) aus folgendem Grund: Aktualisierung des ENtwicklungsstand


Es haben sich bereits 3 registrierte Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

MrMAxx (07.04.2015), Slayer (03.05.2015), annonymie (16.06.2015)

2

Dienstag, 7. April 2015, 07:52

Liebe Mina,

habe zwar Urlaub, muss aber bei einem Umbau helfen, deswegen nur kurz. Hab selten solch eine tolle Doku gelesen, bin sprachlos. Das hast Du Dir sehr viel Mühe gemacht, würde Dich sofort als Redakteurin einstellen. Die Story klingt sehr durchdacht und super spannend. Es sind zwar noch viele unerledigte Kreuzchen in Deiner Tabelle, was bedeutet, dass noch viel Arbeit vor Dir steht, aber es gibt kein Zeitfenster, also alles ganz entspannt.

Freue mich dann über weitere Fortschritte :)

Liebe Grüße
Bay

P.S. Mach weiter so ! :thumbup:

shlainn

Fortgeschrittener

Beiträge: 235

Danksagungen: 81

  • Nachricht senden

3

Dienstag, 7. April 2015, 08:45

Hallo Mina,

Danke für dieses ausführliche Update! Die Energie und Zeit die Du in Dein Projekt steckst ist sehr beeindruckend. Danke dass du und teilhaben lässt.

Viel Erfolg weiterhin,

Shlainn

ulle

Fortgeschrittener

Beiträge: 243

Danksagungen: 103

  • Nachricht senden

4

Dienstag, 7. April 2015, 09:23

Auch von mir ein großen Respekt für diese ausführliche Einführung.

In Bezug auf die Wahl deines Frameworks, wird dir hier niemand den Kopf abreisen. Wie ich dir auch schon immer gesagt habe, nimm das was dich am schnellsten zu deinem Ziel bringt. Und wenn das in deinem Fall CI3 ist, dann ist es eben so.

Viel Erfolg wünsche ich dir auf jedenfall

Fhizban

unregistriert

5

Dienstag, 7. April 2015, 09:35

Gefällt mir ebenfalls richtig gut!

Toller zusammenfassender Thread im übrigen.

Mach weiter so!

6

Dienstag, 7. April 2015, 13:36

Hey Mina,

ich will mal meinen Senf dazugeben.

ich habe Dein Spiel über die Zeit hinweg regelmäßig verfolgt und bin richtig begeistert mit wie viel Hingabe du bei Deinem Projekt dabei bist und das auch mit dieser Community teilst.

Mach weiter so und lass Dich nicht abbringen ;)

7

Dienstag, 7. April 2015, 14:45

Jo.
Weiter so.
Bist ja besser als ich. :(

Mina

Profi

  • »Mina« ist der Autor dieses Themas

Beiträge: 399

Danksagungen: 603

  • Nachricht senden

8

Dienstag, 7. April 2015, 20:00

Jo.
Weiter so.
Bist ja besser als ich. :(
Danke, aber das glaube ich nicht. Du machst nur alles so komplex und so genau, dass du viel langsamer vorankommst als ich!
Und danke für das positive Feedback. :) Ich freu mich schon drauf, die nächsten Stifte und Haken zu setzen.

Mina

Profi

  • »Mina« ist der Autor dieses Themas

Beiträge: 399

Danksagungen: 603

  • Nachricht senden

9

Samstag, 2. Mai 2015, 21:40

Hallo allerseits,

auch wenn mein Code wahrscheinlich immer noch absoluter Mist ist, zeige ich hier mal einen Schnipsel daraus. Wenigstens die OOP-Neulinge können vielleicht was daraus gewinnen.
Die anderen bringen vielleicht konstruktive Kritik an.

Vorher eine Erklärung dazu:
Ich baue für das Spiel eine Bibliothek, die nur die Berechnungen und
Abläufe des Spiels behandelt, Requests, Sicherheit, Ausgabe und
dergleichen behandelt weiterhin das Framework. So kann ich es prinzipiell recht einfach in alle
möglichen Frameworks einbauen, ohne am Kern etwas ändern zu müssen.
Einmal habe ich Entities. Diese sind Datenobjekte, die lediglich spielbezogene Informationen sagen wir mal... zwischenspeichern und gegebenenfalls die Manipulation dieser überwachen. Entities sind z.B. Pferd, Weide, Zustand, Reiter, usw.
Diese Entities werden durch Interaction Klassen manipuliert. Eine Interaction ist bei mir: Ein bestimmtes Training, Pflegeaktionen, und so weiter.
Berechnungen, die nicht zur Manipulation führen laufen unter Services. Dies kann zum Beispiel das berechnen der Fellfarbe aus dem gespeicherten Code sein, das Umrechnen von Zahlenwerten, usw. -> also Dinge, die ultimativ für die View bestimmt sind, nicht für das Model.
Höchste Ebene ist die Engine. Sie bestimmt, welche der Trainingsoptionen ausführbar sind, gibt bestimmte Ergebnisse vor und bildet geradezu eine Art Umgebung. So kann ich ein erwachsenes Pferd vom Fohlen, und eine krankes vom gesunden Pferd unterscheiden. Auch die Ausgabe wird teilweise vorbereitet.
An die Engine werden die Daten durch das Model im Controller übergegeben, wo sie weiterverarbeitet werden. Am Ende bekommt man die Daten aktualisiert zurück.
Engines gibt es für alle großen, sehr komplexen Hauptbereiche. Das Training ist komplex und zusammenhängend mit zig anderen Faktoren z.B. Für Kleinigkeiten gibt es nur Interactions. So brauch ich für das Abäpfeln einer Weide keine Abhängigkeiten.

Das hier ist, wie der Namespaces verrät eine Interaction Klasse. Der weitere Rest dürfte sich auch erschließen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php

	namespace Hippodora\Library\Interaction;
	
	use Hippodora\Library\Entity\Pferd;
	use Hippodora\Library\Entity\Weide;
	
	class Weidegang {
	
		/**
		* @access private
		* @var Hippodora\Library\Entity\Pferd
		*/
		private $pferd;
		
		/**
		* @access private
		* @var Hippodora\Library\Entity\Weide
		*/
		private $weide;
		
		/**
		* @access protected
		* @var array
		*/
		protected $faktor = [8 => 1, 6 => 2, 4 => 3];
		
		/**
		* @access public
		* @param Hippodora\Library\Entity\Pferd $pferd
		* @param Hippodora\Library\Entity\Weide $weide
		*/
		public function __construct(Pferd $pferd, Weide $weide) {
			$this->setPferd($pferd);
			$this->setWeide($weide);
		}
		
		/**
		* @access public
		* @param Hippodora\Library\Entity\Pferd $pferd
		*/
		public function setPferd(Pferd $pferd) {
			$this->pferd = $pferd;
		}
		
		/**
		* @access public
		* @return Hippodora\Library\Entity\Pferd
		*/
		public function getPferd() {
			return $this->pferd;
		}
		
		/**
		* @access public
		* @param Hippodora\Library\Entity\Weide $weide
		*/
		public function setWeide(Weide $weide) {
			$this->weide = $weide; 
		}
		
		/**
		* @access public
		* @return Hippodora\Library\Entity\Weide $weide
		*/
		public function getWeide() {
			return $this->weide;
		}
		
		/**
		* "Berechnet" den Faktor, mit dem die Werteveränderungen berechnet werden.
		* @access public
		* @return int
		*/
		public function calculateFaktor() {
			return $this->faktor[$this->getWeide->getGroesse()];
		}
		
		/**
		* Berechnet den Bewuchs für eine Wiese nach jeweils einer
		* Beweidungsdauer von 5 Minuten neu.
		* @access public
		* @param int $dauer
		*/
		public function changeWeide() {
			
			// Werteanstieg berechnen
			$faktor = $this->calculateFaktor();
			$sauberkeit = -0.08 * $faktor;
			$bewuchs	= -0.16 * $faktor;
			
			// Neue Werte berechnen
			$this->weide->changeSauberkeit($sauberkeit);
			$this->weide->changeBewuchs($bewuchs);
		}
		
		/**
		* Berechnet die Veränderungen des Zustands des Pferdes für 
		* eine Weidedauer von 5 Minuten.
		* @access public
		*/
		public function changePferd() {
			
			$bewuchs = $this->weide->getBewuchs();
			$groesse = $this->weide->getGroesse();
			
			// Unter 10% Bewuchs
			if ($bewuchs <= 10 && $bewuchs !== 0) {
				$this->pferd->zustand->changeEnergie(1.66);
				$this->pferd->zustand->changeKonstitution(0.16 * $groesse);
				$this->pferd->zustand->changeSauberkeit(-4.16);
			}
			
			// Außreichend Bewuchs
			if ($this->weide->getBewuchs() > 10) {
				$this->pferd->zustand->changeEnergie(8.3);
				$this->pferd->zustand->changeKonstitution(0.16 * $groesse);
				$this->pferd->zustand->changeSauberkeit(-2.08);
			}
			
			// Kein Bewuchs mehr vorhanden (0%)
			if ($this->weide->getBewuchs() === 0) {
				$this->pferd->zustand->changeEnergie(-0.4);
				$this->pferd->zustand->changeKonstitution(-0.4);
				$this->pferd->zustand->changeSauberkeit(-8.3);
			}
		}
		
		/**
		* Lässt das Pferd für eine bestimmte Dauer auf der Weide grasen.
		* Damit die Werte immer mit den aktuellen Werten des Pferdes und der
		* Weide berechnet werden, wird eine Schleife genutzt.
		* @access public
		* @param int $dauer
		*/
		public function weiden($dauer) {
			for ($i = 0; $i + 1 < $dauer; $i++) {
				$this->changePferd();
				$this->changeWeide();
			}
			$this->pferd->tagesverlauf->changeUhrzeit($dauer);
		}
	}
?>


Bisher können Pferde fressen, schlafen, trinken, weiden und in der Box herumgammeln, ist aber noch nicht fehlerfrei und es fehlt mehr für ein spannendes Spiel.

LG
Mina

shlainn

Fortgeschrittener

Beiträge: 235

Danksagungen: 81

  • Nachricht senden

10

Sonntag, 3. Mai 2015, 10:51

Hallo Mina,

Nur eine kleine Frage: weshalb sind seine Set*-Funktionen public? Erwartest Du während des Weideganges das Pferd oder die Weide auszutauschen? Macht es Sinn die Möglichkeit zu haben das zu tun? Wenn nicht würde ich diese beiden, und sämtliche anderen Funktionen die nicht von außerhalb der Klasse aufgerufen werden sollen private zu machen

Shlainn

sinus

Fortgeschrittener

Beiträge: 226

Danksagungen: 76

  • Nachricht senden

11

Sonntag, 3. Mai 2015, 12:13

... Wenn nicht würde ich diese beiden, und sämtliche anderen Funktionen die nicht von außerhalb der Klasse aufgerufen werden sollen private zu machen ...


schlainn meinte natürlich protected, damit man von diesen klassen auch erben kann, falls es eine spezielle andere art von weide usw. geben wird/kann .. :)

gruß
sinus
loading ..

Slayer

Fortgeschrittener

Beiträge: 472

Danksagungen: 139

  • Nachricht senden

12

Sonntag, 3. Mai 2015, 15:36

Hi sinus!

Ich weiß zwar nicht, was shlainn meinte, aber ich für meinen Teil halte die Sichtbarkeit immer so gering als möglich. Protected also wirklich nur, wenn abgeleitete Klassen darauf zugreifen müssen! Das erhöht die Wartbarkeit des Codes, weil man an der Deklaration der Methode sofort erkennen kann, ob auch andere betroffen sein können.

Have fun
Slayer
eXperinox - Browserspiel Science Fiction / Weltraum - "noXen macht Spaß!"
---
Austria Insiderinfo - Wandern im Salzburger Land

sinus

Fortgeschrittener

Beiträge: 226

Danksagungen: 76

  • Nachricht senden

13

Sonntag, 3. Mai 2015, 16:12

@Slayer: ich weiß natürlich auch nicht genau was schlainn meinte :D

ich bin der meinung das man "private" nur nutzen sollte, wenn die methode wirklich nicht mehr überschrieben werden darf und der weg damit dann total verschlossen wird ..
protected hingegen schliesst den weg der überschreibung ja nicht und man kann in zukunft evtl. anforderungen dadurch leicht implementieren ..

das ist aber wieder ein weg, bei dem verschiedene meinungen vertreten sind ^^

gruß
sinus
loading ..

Mina

Profi

  • »Mina« ist der Autor dieses Themas

Beiträge: 399

Danksagungen: 603

  • Nachricht senden

14

Sonntag, 3. Mai 2015, 16:19

Hallo zusammen,

da habe ich bei den Sichtbarkeiten einfach nicht groß darüber nachgedacht, werde aber mal meine bisherigen Klassen alle diesbezüglich einmal überarbeiten, wo es nötig ist.

Dankeschön und liebe Grüße,
Mina

Slayer

Fortgeschrittener

Beiträge: 472

Danksagungen: 139

  • Nachricht senden

15

Sonntag, 3. Mai 2015, 18:12


protected hingegen schliesst den weg der überschreibung ja nicht und man kann in zukunft evtl. anforderungen dadurch leicht implementieren ..

das ist aber wieder ein weg, bei dem verschiedene meinungen vertreten sind ^^

Es gibt nur selten die EINE Wahrheit ;)

Ich halte mich an "No functionality is added early!"
Will heißen, dass man Dinge erst dann implementieren soll, wenn man sie wirklich braucht und eben nicht schon, wenn man glaubt, dass man sie einmal brauchen könnte. Aber im Zusammenhang mit der Sichtbarkeit muss man das vlt. nicht ganz so eng sehen. Schaden kann es trotzdem nicht.

Have fun
Slayer
eXperinox - Browserspiel Science Fiction / Weltraum - "noXen macht Spaß!"
---
Austria Insiderinfo - Wandern im Salzburger Land

BlackScorp

Moderator

Beiträge: 1 284

Wohnort: 127.0.0.1

Danksagungen: 566

  • Nachricht senden

16

Sonntag, 3. Mai 2015, 20:04

@sinus

aktuell hat der Interactor zu viel Logik, in der Regel leitet man nichts von einem ab sondern ersetzt diesen Völlig, da dieser Interactor eben zu viel Logik hat, ist es nicht so einfach. Sobald ich mehr Zeit habe, werde ich es ein wenig aufteilen.

@Mina

könntest du vielleicht noch die Action des Controllers zeigen? also mich würde der Part interessieren wie du Pferde ID aus der Route ausliest und die Beziehung zu der Weide
Qualität eines Codes misst man in WTF/Sekunde

Mina

Profi

  • »Mina« ist der Autor dieses Themas

Beiträge: 399

Danksagungen: 603

  • Nachricht senden

17

Mittwoch, 6. Mai 2015, 13:32

Hallo allerseits!

BLACKNIGHTINGALE81 hat mir soeben die Nutzung ihrer Pferdegrafiken für die geschlossene Alpha-Testphase (hoffentlich ab Sommer 2015?) genehmigt! (Nochmal ein großes Dankeschön) Den Auftrag für die Grafiken für später habe ich bereits zu Weihnachten bei Shekla eingereicht.

Pferde werden also unter anderem so aussehen (Die Fellfarbe wird angepasst):
[img]http://fs2.directupload.net/images/150506/7yjlp2sk.png[/img]

Bis dahin liebe Grüße,
Mina

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Mina« (6. Mai 2015, 13:39)


BlackScorp

Moderator

Beiträge: 1 284

Wohnort: 127.0.0.1

Danksagungen: 566

  • Nachricht senden

18

Mittwoch, 6. Mai 2015, 13:40

nice, teile die Pferde doch in Stücke auf und Animiere die mit http://de.esotericsoftware.com/ :D wäre doch witzig wenn du so eine Weide anschaust und die Pferde laufen über die Weide und schütteln mit dem Kopf usw.. halt das was Pferde so tun
Qualität eines Codes misst man in WTF/Sekunde

Mina

Profi

  • »Mina« ist der Autor dieses Themas

Beiträge: 399

Danksagungen: 603

  • Nachricht senden

19

Mittwoch, 6. Mai 2015, 13:48

Nun ja, ich denke nicht, dass die Pferde noch halb so schön aussähen. Außerdem hatte ich eher ein Spiel wie den Wilden Reiter oder Cavalcando ins Auge gefasst. Etwas ziemlich statisches in der Hinsicht (die optisch ansprechendere Variante von Tabellenspielen)! :P Obendrein muss ich jetzt eh erst mal fehlende Dinge programmieren.
Aber danke für den Hinweis! Sollte das Spiel mal fertig sein, kann ich über so etwas ja nochmal nachdenken.

BlackScorp

Moderator

Beiträge: 1 284

Wohnort: 127.0.0.1

Danksagungen: 566

  • Nachricht senden

20

Mittwoch, 6. Mai 2015, 14:02

Mal so ne Frage nebenbei, wird es bei Hippodora auch Einhörner geben?
Qualität eines Codes misst man in WTF/Sekunde

Ähnliche Themen

Social Bookmarks