1. #1
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.210
    Thanked 9.132 Times in 3.006 Posts
    Blog Entries
    5

    Standard [HTML5][OS] Snake + LIVE Demo

    Name:  snake.png
Hits: 269
Größe:  2,0 KB


    Spoiler:

    PHP-Code:
    <!DOCTYPE HTML>
    <
    html>
    <
    head>
        <
    title>HTML5 Snake by DMW007</title>
        <
    script type="text/javascript">

    var 
    snake = Array();
    var 
    cookie;
    var 
    way 'r';
    var 
    squareSize 10;
    var 
    canvas;
    var 
    field;
    var 
    intervalID;

    function 
    move() {
        var 
    newPos calculateNewPos(way);

        if(
    hasLost(newPos)) {
            
    document.getElementById('points').innerHTML "Verloren mit " + (snake.length 2) + " Punkten!";
            
    clearInterval(intervalID);
        }else {
            
    snake.push(newPos);
            if(
    pointsEquals(newPoscookie)) {
                
    newCookie();
            }else {
                var 
    toRemove snake.shift();
                
    canvas.clearRect(toRemove.xtoRemove.y1010);
            }

            for(var 
    0snake.lengthi++) {
                
    canvas.fillRect(snake[i].xsnake[i].y99);
            }
            
    document.getElementById('points').innerHTML "Punkte: " + (snake.length 2);
        }
    }

    function 
    newCookie() {
        if(
    cookie) {
            var 
    old cookie.clone();
            
    canvas.clearRect(old.xold,y10 110 1);
        }

        var 
    00;
        do {
            
    Math.floor(Math.random() * (canvas.width 10)) * 10;
            
    Math.floor(Math.random() * (canvas.height 10)) * 10;
            
    cookie = new Point(xy);
        }while(
    pointInSnake(cookie));
        
        
    canvas.strokeRect(cookie.1cookie.188);
    }

    function 
    start(intervalcanvasID) {
        
    field document.getElementById(canvasID);
        
    canvas field.getContext('2d');
        
    snake.push(new Point(00));
        
    snake.push(new Point(100));
        
    setFieldSize(400200);
        
    newCookie();
        
    intervalID window.setInterval("move()"interval);
    }

    function 
    Point(xy) {
        
    this.x;
        
    this.y;
    }

    function 
    calculateNewPos(key) {
        var 
    newPos snake[snake.length 1].clone();
        
    newPos.+= (key == 'r' squareSize : (key == 'l' ? -squareSize 0));
        
    newPos.+= (key == 'd' squareSize : (key == 'u' ? -squareSize 0));
        return 
    newPos;
    }

    function 
    pointInSnake(point) {
        for(var 
    0snake.lengthi++) {
            if(
    snake[i].== point.&& snake[i].== point.y)
                return 
    true;
        }
        return 
    false;
    }

    function 
    pointsEquals(p1p2) {
        return 
    p1.== p2.&& p1.== p2.y;
    }

    function 
    hasLost(newPos) {
        return (
    newPos.== canvas.width || newPos.== canvas.height || newPos.|| newPos.0) || pointInSnake(newPos);
    }

    function 
    setFieldSize(widthheight) {
        
    canvas.width field.width width;
        
    canvas.height field.height height;
    }

    Object.prototype.clone = function() {  
        var 
    newObj = (this instanceof Array) ? [] : {};  
        for (
    item in this) {  
            if (
    item == 'clone') continue;  
                if (
    this[item] && typeof this[item] == "object") {  
                    
    newObj[item] = this[item].clone();  
            } else 
    newObj[item] = this[item]  
        } return 
    newObj;  
    };

    window.onkeydown = function(e) {
        var 
    keys = { 37:'l'38:'u'39:'r'40:'d' };
        var 
    key keys[e.keyCode.toString()];
        var 
    newPos calculateNewPos(key);

        if(!
    pointInSnake(newPos)) {
            
    way key;
        }
    }

    window.onload = function() {
        
    start(100"field");
    }
        </
    script>
        <
    style type="text/css">
    body {
        
    text-align:center;
        
    font-family:Verdana;
    }
    #field {
        
    border1px solid #9C9898;
    }
    #points {
        
    width:800px;
        
    font-size:20pt;
        
    font-weight:bold;
        
    margin-left:auto;
        
    margin-right:auto;
        
    margin-top:20px;
    }
    footer {
        
    font-size:8pt;
        
    margin10px 0 10px 0;
    }
        </
    style>
    </
    head>
    <
    body>
    <
    pre>   _____             __      
      
    ___/____  ____ _/ /_____ 
      
    \__ \/ __ \/ __ `/ //_/ _ \
     ___/ / / / / /_/ / ,&lt; /  __/
    /____/_/ /_/\__,_/_/|_|\___/ 
                                 
    </pre>

        <canvas id="field"></canvas><br>
        <div id="points">0</div>
        <footer>
        © DMW007<br>
        <a href="http://u-hacks.net">Visit U-Hacks.net!</a>
        </footer>
    </body>
    </html> 


    Ist natürlich erstmal die klassische Basisversion, heißt: Mit jedem Quadrat, das die Schlange frisst bekommt man 1 Punkt und die Schlange verlängert sich entsprechend um ein Quadrat, wenn man versucht sich selbst oder die Wand zu fressen bekommt das der Schlange gar nicht gut und man hat verloren.
    Kann man natürlich noch stark erweitern, was ich auch noch machen werde (Level, Punktebringer, Schwierigkeits- und Geschwindigkeitsstufen bis hin zum Multiplayer-Mode).
    Für die finale Version kann man auch noch ein bisschen aufräumen, werde ich jetzt aber nicht machen, da ich noch dran weitercode und sich die Version sowieso hauptsächlich an Entwickler und solche die es werden wollen richtet.

    Von mir aus dürft ihr dran weiterarbeiten und das ganze auch veröffentlichen, Vorraussetzung ist ein Verweis auf mich und UH.
    Und nein, 2 Zeilen Code dazuschreiben, FG/HG Farbe ändern und solche Spielereien zählt für mich nicht als weiterarbeiten!

    Wen Webentwicklung nicht interessiert, der kann das ganze auch direkt in der Praxis testen und eine Runde zocken:


    HINWEIS:
    Das gesamte Snake-Feld basiert auf HTML5 Canvas. Der Internet Explorer kommt damit nicht klar (logisch, der braucht ja mal wieder seine Extrawurst...)
    Daher funktioniert das Spiel NICHT mit dem Internet Explorer!
    Wenn ihr zocken wollt sucht euch einen ordentlichen Browser. Soweit ich weiß unterstützen alle halbwegs verbreiteten Browser (Firefox, Chrome, Opera) HTML5 inklusive Canvas, vorrausgesetzt ihr nutzt eine halbwegs aktuelle Version.

    Ich will hier in dem Thread auch keine Posts wie 'Ich hab 1337 Punkte' sehen, dafür wird es noch eine Highscore-Liste geben.


  2. The Following 10 Users Say Thank You to DMW007 For This Useful Post:

    Bossgen (18.07.2012), Chrissy (05.11.2014), Comu (14.05.2012), FromMiG (14.05.2012), JumP-StyLe (14.05.2012), milchbubix (14.05.2012), patlux (28.05.2012), Sky.NET (05.11.2014), ThunderStorm (07.03.2013), Xin Zhao (14.05.2012)

  3. #2

    Registriert seit
    17.09.2012
    Beiträge
    1.865
    Thanked 384 Times in 258 Posts

    Standard AW: [HTML5][OS] Snake + LIVE Demo

    Kurze Frage , Könnt ihr dafür in naher Zukunft einen eigenen Bereich Einfügen ? Ich finde das ganze Thema Html5 Spiele sehr Interessant .

    Bleibt es bei der Version oder wird es auch Map Anbindung geben ? (Einen Bereich von den man von A nach B kommt ) Und ab einer bestimmten Punktezahl einen Map wechsel

    Das ist jetzt eventuell etwas weit gedacht aber wird es Eventuell Touch-Support geben ( sorry aber Snake ist wohl Das mega Game )

    Und es fehlt der Neustart Knopf wenn man verliert .

    Oh gerade gesehen von 2012 ^^ Ist das dann überhaupt noch Aktuell ?
    Geändert von Chrissy (05.11.2014 um 20:01 Uhr)

  4. #3
    Avatar von Sky.NET
    Registriert seit
    26.11.2011
    Beiträge
    2.462
    Thanked 2.717 Times in 1.286 Posts
    Blog Entries
    7

    Standard AW: [HTML5][OS] Snake + LIVE Demo

    Wenn du Bock hast kannst du das gern selbst erweitern, Source ist da, und von mir aus kann man deine Version dann auch hier auf U-Labs erreichbar machen.
    Ich vermute mal stark, dass Daniel keine Zeit haben wird das in nächster Zeit zu "DEM UBER-Snake" zu coden xD da gibt es weitaus wichtigeres auf unserer Agenda xD
    Java:
    Spoiler:

    Lustige Quotes:
    Spoiler:
    Zitat Zitat von Hydra Beitrag anzeigen
    Hier (in Deutschland) kann man keine andere tolle Aktivitäten machen, als zu chillen, shoppen, saufen und Partys feiern xD Ich habe nichts gegen ab und zu mal saufen und Partys feiern, aber das ist doch nicht wirklich das wahre Leben o_o
    Wieso das Internet für die meisten Leute gefährlich ist:
    Zitat Zitat von Silent Beitrag anzeigen
    Ich weiß ja nicht was der Sinn dahinter steckt es heißt immer "security reasons".

Ähnliche Themen

  1. FIFA 13 Demo
    Von Timeskip im Forum FIFA 12/13/14
    Antworten: 9
    Letzter Beitrag: 21.09.2012, 12:31
  2. Fifa 13 Demo stürzt ab
    Von Strike im Forum FIFA 12/13/14
    Antworten: 4
    Letzter Beitrag: 12.09.2012, 20:24
  3. [MSN Fake] Mappe < Demo
    Von Kuchenmaster im Forum Showroom
    Antworten: 5
    Letzter Beitrag: 03.04.2011, 16:44

Stichworte

Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.