Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 10:57

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Browsergame Map

Discussion on Browsergame Map within the Web Development forum part of the Coders Den category.

Reply
 
Old   #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.
Masterkroko1 is offline  
Old 10/29/2013, 00:31   #2

 
Synatex's Avatar
 
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:
Synatex is offline  
Old 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.
Masterkroko1 is offline  
Old 10/29/2013, 00:53   #4

 
マルコ's Avatar
 
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.
マルコ is offline  
Old 10/30/2013, 21:27   #5
 
'Ownii's Avatar
 
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']) > ) {
            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']) > ) {
        
            while(
$vr mysql_fetch_object($query['select_radius']) ) {
            
                
$radiusa $radiusa sqrt(pow(($vr->$map['origin']),2) + pow(($vr->$map['origin']),2));
            
                
$r++;
            
            }
            
            
$radius ceil($radiusa/$r);
        
        }
        else {
        
            
$radius 0;
            
        }
        
        
        
// Create random position
        
$angle deg2rad(rand(0900000)/10000);
        
        
$x sin($angle) * $radius;
        
        
$y cos($angle) * $radius;
        
        
// Select exactly position // check position
        
while( !$create ) {
        
            
$nx = ($x rand(02)) * $xm $map['origin'];
            
$ny = ($y rand(02)) * $ym $map['origin'];
            
            
$query['select_koordi'] = mysql_query("SELECT * FROM village WHERE x = '"$nx ."' AND y = '"$ny ."'");
            
            if( 
mysql_num_rows($query['select_koordi']) == ) {
            
                
$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'] .")"); 
'Ownii is offline  
Old 10/30/2013, 23:27   #6

 
マルコ's Avatar
 
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)
マルコ is offline  
Thanks
1 User
Old 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
Masterkroko1 is offline  
Old 11/08/2013, 19:16   #8
 
'Ownii's Avatar
 
elite*gold: 0
Join Date: Mar 2011
Posts: 270
Received Thanks: 769
Quote:
Originally Posted by マルコ View Post
@'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
'Ownii is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.