|
You last visited: Today at 10:57
Advertisement
Browsergame Map
Discussion on Browsergame Map within the Web Development forum part of the Coders Den category.
10/29/2013, 00:28
|
#1
|
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
|
Browsergame Map
Liebe Com,
da ich nun angefangen habe mein eigenen Browsergame zu entwickeln stoß ich an so manches Problem welches ich zuvor noch nie bearbeitet hatte.
Fangen wir mal an ich hoffe ich schreib das hier Verständlich.
Ich möchte eine Karte erstellen wo die Dörfer von den User "angelegt" werden sowie z.B. die-staemme.
Ich hab mir überlegt das ich ein Raster von 999x999 haben möchte zudem soll das erste Dorf in die Mitte gesetzt werden sagen wir mal 500x500. Wenn jetzt neue Spieler draufkommen sollen sie immer um die äußere linie gesetzt werden das daraus ein großer Kreis entseht wie z.b. auf diesem Bild

(rote Punkte sind alle einzelne Dörfer). Die Dörfer sollten nicht alle direkt aneinanderliegen sondern hin und wieder 1 - 3 leere felder damit das "natürlicher" aussieht.
Ich hoffe ich konnte es einigermaßen Verständlich erklären werden dennoch Infos benötigt bitte einfach melden.
|
|
|
10/29/2013, 00:31
|
#2
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
Und wo ist dein Lössungsansatz? Am besten in Black Market wenn du was gemacht haben willst, hier kriegst du nur Tipps & Tricks wie du dich verbessern kannst (jedenfalls bei einigen, die anderen posten auch immer wieder Codes rein^^).
Falls du nur einen Ansatz suchst und keine direkte Hilfe, wäre dieses Tutorial eventuell was für dich:
|
|
|
10/29/2013, 00:46
|
#3
|
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
|
Oh hätt ich hinzuschreiben sollen ich suche keine Lösungen. Nur Tipps die mich auf den richtigen Pfad bringen. Ich möchte garkein Code sehen. Ich schau mir das dann heute Nachmittag mal an was du gepostet hast.
|
|
|
10/29/2013, 00:53
|
#4
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Ich würde das ganz einfach so machen. Speicher den Initialen Radius irgendwo ab. berechne die Anzahl der Felder im Kreis (zum Beispiel per Flächenberechnung). Und dann prüfst du bei jedem Dorfbau, ob etwa 1/3 bis 1/4 der Felder im Kreis belegt sind. Ist dies der Fall vergrößerst du den Radius um einen bestimmten Prozentsatz und überschreibst den initialen Radius damit.
Ob ein Dorf an einer Position gebaurt werden darf oder nicht kannst du mit dem Abstand zur Mitte berechnen. Ist der größer als 0.5*Radius, dann darf dort kein Dorf gebaut werden. Am besten graust du die netsprechenden Felder aus.
Eine solche Karte, auf der Felder auusgegraut sind, würde ich nur ein Mal berechnen lassen, wenn der initiale Radius gesetzt wird, oder der Radius vergrößert wird. So kannst du auch ohne Probleme jederzeit deine Werte ändern, ohne dass du an die Grafiken denken musst.
|
|
|
10/30/2013, 21:27
|
#5
|
elite*gold: 0
Join Date: Mar 2011
Posts: 270
Received Thanks: 769
|
Ich hatte sowas bereits einmal geschrieben (Die Stämme). Ich habe im Prinzip den Durchschnittsradius der letzten 20 Dörfer genommen und darum eine Zufallszahl generiert (Wahrscheinlichkeit eher höher als niedriger als Durchschnitt) und dann mit Trigonometrie
Koordinaten im jeweilen Bereich erstellt.
Hier einmal mein Code davon: (Hoffe übersichtlich genug)
PHP Code:
$query['select_user_village'] = mysql_query("SELECT * FROM village WHERE userid = '". $session->id ."' LIMIT 1"); if( mysql_num_rows($query['select_user_village']) > 0 ) { die(); } $d[0] = 'ne'; $d[1] = 'nw'; $d[2] = 'sw'; $d[3] = 'se'; // Create Random direction if( $_POST['direction'] == 'random' ) { $_POST['direction'] = $d[rand(0,3)]; } // Select last 20 villages if( $_POST['direction'] == 'ne' ) { $xm = 1; $ym = -1; $query['select_radius'] = mysql_query("SELECT * FROM village WHERE x >= ". $map['origin'] ." AND y <= ". $map['origin'] ." ORDER BY createtime DESC LIMIT 20"); } if( $_POST['direction'] == 'se' ) { $xm = 1; $ym = 1; $query['select_radius'] = mysql_query("SELECT * FROM village WHERE x >= ". $map['origin'] ." AND y > ". $map['origin'] ." ORDER BY createtime DESC LIMIT 20"); } if( $_POST['direction'] == 'sw' ) { $xm = -1; $ym = 1; $query['select_radius'] = mysql_query("SELECT * FROM village WHERE x < ". $map['origin'] ." AND y > ". $map['origin'] ." ORDER BY createtime DESC LIMIT 20"); } if( $_POST['direction'] == 'nw' ) { $xm = -1; $ym = -1; $query['select_radius'] = mysql_query("SELECT * FROM village WHERE x < ". $map['origin'] ." AND y <= ". $map['origin'] ." ORDER BY createtime DESC LIMIT 20"); } $r = 0; // Get Average of last 20 villages if( mysql_num_rows($query['select_radius']) > 0 ) { while($vr = mysql_fetch_object($query['select_radius']) ) { $radiusa = $radiusa + sqrt(pow(($vr->x - $map['origin']),2) + pow(($vr->y - $map['origin']),2)); $r++; } $radius = ceil($radiusa/$r); } else { $radius = 0; } // Create random position $angle = deg2rad(rand(0, 900000)/10000); $x = sin($angle) * $radius; $y = cos($angle) * $radius; // Select exactly position // check position while( !$create ) { $nx = ($x + rand(0, 2)) * $xm + $map['origin']; $ny = ($y + rand(0, 2)) * $ym + $map['origin']; $query['select_koordi'] = mysql_query("SELECT * FROM village WHERE x = '". $nx ."' AND y = '". $ny ."'"); if( mysql_num_rows($query['select_koordi']) == 0 ) { $create = true; } } // Create buildings $points = 0; $population = 0; foreach($start AS $key => $value) { for($p = 1; $p <= $value; $p++ ) { $points = $points + $build[$key]['points'][$p]; $population = $population + $build[$key]['farm'][$p]; } } // INSERT VILLAGE $query['insert_village'] = mysql_query("INSERT INTO village (userid, name, points, agreement, x, y, flag, createtime, r_wood, r_stone, r_iron, last_wood_refresh, last_stone_refresh, last_iron_refresh, population, main, barracks, stable, garage, snob, smith, place, market, wood, stone, iron, storage, farm, hide, wall, church) VALUES ('". mysql_real_escape_string($session->id) ."', '". mysql_real_escape_string($session->username) ."s Dorf', '". $points ."', '100', '". mysql_real_escape_string($nx) ."', '". mysql_real_escape_string($ny) ."', '0', '". mysql_real_escape_string(time()) ."', 500, 500, 500, '". mt() ."', '". mt() ."', '". mt() ."', '". $population ."', ". $start['main'] .", ". $start['barracks'] .", ". $start['stable'] .", ". $start['garage'] .", ". $start['snob'] .", ". $start['smith'] .", ". $start['place'] .", ". $start['market'] .", ". $start['wood'] .", ". $start['stone'] .", ". $start['iron'] .", ". $start['storage'] .", ". $start['farm'] .", ". $start['hide'] .", ". $start['wall'] .", ". $start['church'] .")");
|
|
|
10/30/2013, 23:27
|
#6
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
@'Ownii:
du solltest dir evtl mal switch Anweisungen anschaun...
Und die Query ist in jedem Fall auch zu 99% gleich, also wieso schreibst du sie 4x hin?
Zudem ist das prozedurale MySQL veraltet. Besser wäre prepared statements (mit PDO)
|
|
|
10/31/2013, 21:51
|
#7
|
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
|
Ich sag erstmal danke für die Vorschläge und Ownii ein paar kleine Kommentare innerhalb des PHP-Code wäre nett  .
Ich werd das mit der Karte erstmal nach hinten verschieben und mich den anderen Stellen erstmal zuwenden. Da mir aufgefallen ist das meine Datenbankstruktur mist war
|
|
|
11/08/2013, 19:16
|
#8
|
elite*gold: 0
Join Date: Mar 2011
Posts: 270
Received Thanks: 769
|
Quote:
Originally Posted by マルコ
@'Ownii:
du solltest dir evtl mal switch Anweisungen anschaun...
Und die Query ist in jedem Fall auch zu 99% gleich, also wieso schreibst du sie 4x hin?
Zudem ist das prozedurale MySQL veraltet. Besser wäre prepared statements (mit PDO)
|
Das script ist schon ein wenig älter, inzwischen mache ich das alles anders..
ich werde gleich mal kommentare rein editieren
|
|
|
 |
Similar Threads
|
[Browsergame Bots & Tools] Alle Browsergame Bots & Tools auf einem Blick
04/12/2014 - Browsergames - 71 Replies
Hallo liebe Community!
Da der Thread von AlphaZero schon länger inaktiv geworden ist, erstelle ich einfach mal einen neuen.
Das läuft wie folgt ab. Ihr postet einen Bot ein Tool oder was auch immer (sollte schon was mit Browsergames zu tun haben) und ich nehme diese in die Liste mit auf. Sollte ungefähr so aussehen:
Name des Tools/Eure persönliche Bewertung des Tools/Link zum Tool (wichtig, müssen elitepvpers.com Links sein!)
Adventure Quest World:
Bot/Tool | Status | Bewertung |...
|
Browsergame
08/31/2009 - Browsergames - 4 Replies
ich weiß nicht ob das dieser bereich richtig ist wenn es falsch ist bitte verschieben
Also suche ein spiel so ähnlich wie metin2. metin2 ist langweilig geworden köntet ihr mir was emfehlen was auch kostenlos ist spaß macht
|
Neues Browsergame!/New Browsergame!
04/20/2009 - Browsergames - 1 Replies
Also ich hab mal ein neues Browsergame für euch! das mega geil!
Steege My Brute
A new Browsergame is´t very cool and make a lot of fun :)
:mofo:
|
All times are GMT +1. The time now is 10:57.
|
|