Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 06:16

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

Advertisement



Javascript Spiel und ein paar Fragen

Discussion on Javascript Spiel und ein paar Fragen within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
Skriptum's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 2,506
Received Thanks: 257
Javascript Spiel und ein paar Fragen

Moin,

ich programmiere gerade ein kleines Ping Pong spiel.
Hierbei soll eine Box welche zufällig auftaucht als Extra dienen.
Es funktioniert auch alles an sich gut.
Aber bei einer Sache komme ich irgendwie nicht weiter.
Die Kollision mit dem Ball klappt, aber ich weiß nicht wie ich die Box wieder verschwinden/löschen kann.

Ich habe 2 Fragen:

- Wie kann ich bei einer Kollision die Boxen verschwinden lassen (Kollisionsmodell klappt bereits)
- Bis jetzt wird das Bild, dass auf die Box "gemalt" wird aus der Website entnommen.
Wie kriege ich das mit einer lokalen Bilddatei aus einem Ordner hin?



Code :::

Ich weiß der Code ist noch ziemlich gammelig, aber das ist bis jetzt nur zu Testzwecken.
Hier ein paar Auschnitte aus dem Code:


Code:
function Game() {
...
this.Bonusboxen = new Bonusboxen()
...
}

Game.prototype.draw = function() {
...
this.Bonusboxen.draw(this.context);
...  
};



function Bonusboxen(){
    this.x = Math.floor(Math.random() * (800 - 100 + 1)) +100;
    this.y = Math.floor(Math.random() * (200 - 100 + 1)) +100;
    this.width = 30;
    this.height = 30;
};

Bonusboxen.prototype.update = function()
{
    ..
};
 
Bonusboxen.prototype.draw = function(p)
{
    var c = document.getElementById("game");
	var ctx = c.getContext("2d");
	var img = document.getElementById("bbd");
	ctx.drawImage(img,this.x,this.y,this.width, this.height);

};

Schonmal danke für die Hilfe
Skriptum is offline  
Old 03/16/2015, 18:56   #2
 
elite*gold: 0
Join Date: Sep 2014
Posts: 34
Received Thanks: 13
Quote:
- Wie kann ich bei einer Kollision die Boxen verschwinden lassen (Kollisionsmodell klappt bereits)
Redest du von einem Programmiertechnischen Standpunkt oder von einem visuellen?
Kannst du wenn möglich mal den kompletten Code posten? Dann kann man dir vielleicht besser helfen.

Quote:
- Bis jetzt wird das Bild, dass auf die Box "gemalt" wird aus der Website entnommen.
Wie kriege ich das mit einer lokalen Bilddatei aus einem Ordner hin?
Du musst jede Bilddatei vorladen bevor du sie innerhalb von Canvas verwenden kannst, und dannach
einfach das die Instanz von "Image" als ersten Parameter von drawImage verwenden.

Code:
var img = new Image();
img.src = './pfad/bild.png';
img.onload = function () {
  ctx.drawImage(img ...);
}
vinnce is offline  
Thanks
1 User
Old 03/16/2015, 19:02   #3
 
Skriptum's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 2,506
Received Thanks: 257
Quote:
Originally Posted by vinnce View Post
Redest du von einem Programmiertechnischen Standpunkt oder von einem visuellen?
Kannst du wenn möglich mal den kompletten Code posten? Dann kann man dir vielleicht besser helfen.



Du musst jede Bilddatei vorladen bevor du sie innerhalb von Canvas verwenden kannst, und dannach
einfach das die Instanz von "Image" als ersten Parameter von drawImage verwenden.

Code:
var img = new Image();
img.src = './pfad/bild.png';
img.onload = function () {
  ctx.drawImage(img ...);
}

Ok, schonmal vielen Dank.

"Redest du von einem Programmiertechnischen Standpunkt oder von einem visuellen? " Sowohl als auch. Ich möchte eigentlich nur dass die Box nach einer Kollision verschwindet und ich sie später wieder erscheinen lassen kann. Als Erklärung es ist eine Box die z.B. das Verhalten des Balles ändern soll.
Skriptum is offline  
Old 03/16/2015, 19:47   #4
 
elite*gold: 0
Join Date: Sep 2014
Posts: 34
Received Thanks: 13
Deshalb hatte ich dich gebeten den kompletten Code zu posten weil es mich interessiert hätte auf welche Art und weiße du dein Spiel zeichnest. Die gängige Methode ist ja das man einen endlosen Loop hat welcher die aktuelle Szene bei jedem Tick neu zeichnet.

Wenn deine Bonusbox in zufälligen Intervallen auftauchen soll. würde ich das ungefähr so lösen:

Code:
function Game() {
  for (;;) this.draw();
}
 
Game.prototype.lastBonusBox = null;
Game.prototype.nextBonusBox = null;
Game.prototype.hasActiveBonusBox = false;
Game.prototype.bonusbox = null;

Game.prototype.activateBonusBox = function () {
  this.lastBonusBox = +new Date;
  this.hasActiveBonusBox = true;
  
  this.bonusbox = new Bonusbox;
};

Game.prototype.disableBonusBox = function () {
  this.hasActiveBonusBox = false;
  
  this.lastBonusBox = +new Date;
  this.nextBonusBox = +new Date + Math.floor((Math.random() * 10) + 1);
};

Game.prototype.draw = function () {
  if (+new Date > this.nextBonusBox) 
    this.activateBonusBox();
    
  if (this.hasActiveBonusBox === true)
    gamectx.draw(this.bonusbox.draw() ...);

    
  if (kollision)
    this.disableBonusBox()
};
Der Gedanke dabei ist ganz einfach, das du über die Funktionen "activateBonusBox" und "disableBonusBox" innerhalb deines Scripts entscheiden kannst wann du eine Bonusbox aktivieren, und wann deaktivieren möchtest. Sobald die Bonusbox über "disableBonusBox" deaktiviert wird, wird sie im draw-loop nichtmehr berücksichtigt und von daher beim Zeichenprozess schlicht ignoriert. Außerdem wird ein neuer Zeitstempel generiert wann die nächste Box auftauchen soll (momentaner Zeitstempel + 1-10 sekunden).

Da dein Kollisionsmodell ja funktioniert, kannst du ja bereits feststellen wenn und wann der Ball mit einer deiner Bonusboxen kollidiert, sobald das passiert rufst du wieder die Funktion "disableBonusBox" auf.

Logischerweise ist das Beispielcode, soll nur zur Veranschaulichung dienen.
vinnce is offline  
Thanks
1 User
Old 03/16/2015, 20:24   #5
 
Crossside's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
Es ist etwas Doof das du grade den Code postest der ziemlich wenig aussagt^^
Wenn du den ganzen Code gepostet hättest würden wir dir mehr helfen können.

Folgendes gebe ich dir mal als Tipp: Schaue dir mal das Axis-Aligned Bounding Box Modell an. Damit kannst du Collision Detections mit Boxen machen, nun könntest du so eine Box um deinen Ball herum packen (bei pong dürfte das nicht groß was ausmachen wenn es kein 100%iges rundes boundary is) und um deine "Schläger".
Nun checkst du ob eine Kollision vorhanden ist, und falls ja, ob du sie "erlauben" möchtest (also ob du die bonus box kollision haben möchtest oder nicht - falls nicht tust du einfach nichts + zeichnest die bonusbox nicht). Wenn dann eine Kollision mit einer Bonusbox erkannt wird einfach die Kollisionsabfrage für die Box ausschalten + die Box aufhören zu zeichnen (oder vorher noch ne hübsche Animation zeichnen wo sie vllt explodiert , zerbricht o.ä).

grüße
Crossside is offline  
Thanks
1 User
Old 03/16/2015, 20:52   #6
 
Skriptum's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 2,506
Received Thanks: 257
Quote:
Originally Posted by Crossside View Post
Es ist etwas Doof das du grade den Code postest der ziemlich wenig aussagt^^
Wenn du den ganzen Code gepostet hättest würden wir dir mehr helfen können.

Folgendes gebe ich dir mal als Tipp: Schaue dir mal das Axis-Aligned Bounding Box Modell an. Damit kannst du Collision Detections mit Boxen machen, nun könntest du so eine Box um deinen Ball herum packen (bei pong dürfte das nicht groß was ausmachen wenn es kein 100%iges rundes boundary is) und um deine "Schläger".
Nun checkst du ob eine Kollision vorhanden ist, und falls ja, ob du sie "erlauben" möchtest (also ob du die bonus box kollision haben möchtest oder nicht - falls nicht tust du einfach nichts + zeichnest die bonusbox nicht). Wenn dann eine Kollision mit einer Bonusbox erkannt wird einfach die Kollisionsabfrage für die Box ausschalten + die Box aufhören zu zeichnen (oder vorher noch ne hübsche Animation zeichnen wo sie vllt explodiert , zerbricht o.ä).

grüße
Vielen Dank euch beiden. Ich denke damit dürfte ich es hinbekommen.
Skriptum is offline  
Reply


Similar Threads Similar Threads
Paar Fragen zum Spiel
01/28/2014 - S4 League - 9 Replies
Ich spiele seit heute S4League und hab paar Fragen dazu. Ist das gut, sehr gut oder einfach nix besonderes?: (Hat mich auch 50k Pen gekostet - richtige Entscheidung oder ein schwerwiegender Fehler?) http://i.epvpimg.com/SIzPf.jpg Gibt es hier i-wo Newbie-Guides zu den Features etc? Warum gibts eig. so viele Hacker hier?(Bei anderen Spielen gibts auch Hacks, aber nicht sooo viele Hacker wie hier.)
Paar Fragen zum Spiel.
08/02/2013 - World of Warcraft - 2 Replies
Heyho. Ich und ein Freund von mir haben heute Abend mit World of Warcraft angefangen. Leider blicken wir nicht so ganz durch mit den ganzen Anweisungen und Tutorials. Hätte ein paar Fragen und wäre nett, wenn ihr uns welche davon beantwortet :) Also :D - Wo genau kann man Berufe erlernen? Dort steht immer nur "in einer Großstadt" - Kann man alle tragbaren Items bei Mobs finden? Z.b. Fähigkeitsstufe 5XX, muss man dafür Dungeons oder anderes machen, oder kann man sie einfach bei normalen Mobs...
Paar fragen uber minecraft root und paar plugins
01/15/2013 - Minecraft - 1 Replies
Hallo ich hatte mall paar fragen Welche root is das beste ? Ich weis das es sammelthread gibts aber trozdem mocht ich eure meinung wissen Wo kann man eig plugins kriegen ?(entshuldigung kenn mich da nicht sehr aus will ein server mit freunde aufmachen also fur 20 leute oder so wurde eh wie privat sein) Gibts ein Completes server mit plugins auf public download ? Wie kann man sein eigenes mapp am shnelsten editieren ?
ein paar fragen zum spiel
11/03/2009 - Metin2 - 9 Replies
1. muss man beim biologenquest(lvl60 eiskugel) ein bestimmtes lvl erreicht haben um diese zu droppen? sein char ist lvl62, selbst ich gab gestern nach fast 10 std. auf, nicht eine eiskugel(ohne+). 2.wo kann man ab lvl65 am besten lvln? hab mir die threads durchgelesen,SD1 ist nur bis lvl65 gut. geisterwald und roter wald kann man knicken,SD2 kostet,kommt also nicht in frage.



All times are GMT +2. The time now is 06:17.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

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