⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shootingspaceshipdeu.html

📁 java tutorial all about java game design
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html><!-- InstanceBegin template="/Templates/template.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Java Cooperation: Ein schie?endes Raumschiff</title>
<!-- InstanceEndEditable --><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link href="jc_style.css" rel="stylesheet" type="text/css">
<script src="klayers.js"></script>

<script>

function cancelCloseMenu(){
        if(self.tm) clearTimeout(tm) // cancel delayed closing
}

function showMenu(){
        if(!self.menu || !self.submenu){
                menu=layer("menulayer")
                submenu=layer("submenulayer")
        }

        cancelCloseMenu()

        submenu.moveTo(menu.getAbsoluteLeft(), menu.getAbsoluteTop() + menu.getHeight()) // move second menu relatively
        submenu.show()
}

function initiateHideMenu(){
        tm=setTimeout("hideMenu()",400) // 1 second delay to close a submenu
}

function hideMenu(){
        submenu.hide()
}

</script>

<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
</head>
<body bgcolor="#ffffff" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0">
<div align="center">
  <a name="top"></a>
  <table bgcolor="#737373" border="0" cellpadding="0" cellspacing="0" width="618">
  <tr>
<td rowspan="8" bgcolor="#000000"><img src="Pics/spacer.gif" width="1" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="131" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="13" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="58" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="94" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="81" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="48" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="23" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="38" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="19" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="108" height="1" border="0" alt=""></td>
   <td bgcolor="#000000"><img src="Pics/spacer.gif" width="5" height="1" border="0" alt=""></td>

  </tr>

  <tr>
   <td rowspan="5"><a href="index.html"><img name="fab_r1_c1" src="Pics/fab_r1_c1.gif" width="131" height="71" border="0" alt="Java cooperation home"></a></td>
   <td rowspan="6" bgcolor="#737373"></td>
   <td colspan="9" height="15" bgcolor="#737373"></td>
   <td rowspan="8" bgcolor="#000000"><img src="Pics/spacer.gif" width="1" height="1" border="0" alt=""></td>
  </tr>
  <tr>
   <td colspan="5"><div class="colontitul"><!-- InstanceBeginEditable name="Colontitul" -->Tutorial<!-- InstanceEndEditable --></div></td>
   <td colspan="2" bgcolor="#737373"><img name="fab_r2_c8" src="Pics/fab_r2_c8.gif" width="57" height="19" border="0" alt="type and press Enter"></td>
   <td colspan="2">
<FORM method=GET action="http://www.google.com/search">
<TABLE bgcolor="#FFFFFF" cellpadding="0" cellspacing="0" height="10px"><tr>
<td height="10" valign="middle">
<INPUT TYPE=text name=q size=18 maxlength=60 value="" style="font-size:12px; color:#000000; border-width: 0px;">
<input type=hidden name=domains value="http://javacooperation.gmxhome.de/">
<input type=hidden name=sitesearch value="http://javacooperation.gmxhome.de/" checked>
</td></tr></TABLE>
</td>
</form>
   <td><img src="Pics/spacer.gif" width="1" height="19" border="0" alt=""></td>
  </tr>
  <tr>
   <td colspan="9" bgcolor="#666666"><img name="fab_r3_c3" src="Pics/fab_r3_c3.gif" width="474" height="8" border="0" alt=""></td>
   <td><img src="Pics/spacer.gif" width="1" height="8" border="0" alt=""></td>
  </tr>
  <tr>
   <td colspan="6"><a href="TutorialStartDeu.html"><img src="Pics/deupanel_01.gif" width="56" height="22" border="0"></a><a href="OnlineSpieleStartDeu.html"><img src="Pics/deupanel_02.gif" width="94" height="22" border="0"></a><a href="DownloadsDeu.html"><img src="Pics/deupanel_03.gif" width="76" height="22" border="0"></a><a href="LinksDeu.html"><img src="Pics/deupanel_04.gif" width="52" height="22" border="0"></a><a href="KontaktDeu.html"><img src="Pics/deupanel_05.gif" width="64" height="22" border="0"></a></td>
   <td><img name="fab_r4_c9" src="Pics/fab_r4_c9.gif" width="19" height="22" border="0" alt=""></td>
   <td width="108" height="22" bgcolor="#666666"><div align="center"><span id="menulayer" style="position: relative; background-color:#666666; width:108; height:20; vertical-align:baseline; border:1px solid #FFFFFF"><a href="#" class="text" onmouseover="showMenu(); return true" onmouseout="initiateHideMenu(); return true">Select language</a></span>
   </div>
     <div id="submenulayer" style="position: absolute; visibility: hidden; background-color: #666666; width:108px;">
         <div class="text" style="border:1px solid #FFFFFF; border-top-width:0; padding:5px">
<a href="#" onmouseover="cancelCloseMenu(); return true" onmouseout="initiateHideMenu(); return true">German</a><br>
<a href="indexEng.html" onmouseover="cancelCloseMenu(); return true" onmouseout="initiateHideMenu(); return true">English</a><br>
<a href="http://javacooperation.dev.juga.ru/index.html" onmouseover="cancelCloseMenu(); return true" onmouseout="initiateHideMenu(); return true">Russian</a>
</div>
</div>
</td>
   <td><img name="fab_r4_c11" src="Pics/fab_r4_c11.gif" width="5" height="22" border="0" alt=""></td>
   </tr>
  <tr>
   <td colspan="9"><img name="fab_r5_c3" src="Pics/fab_r5_c3.gif" width="474" height="7" border="0" alt=""></td>
  </tr>
<tr>
<td colspan="11" style="padding:18; background-color:#333333; vertical-align:top;">
<div class="text">
  <!-- InstanceBeginEditable name="EditRegion" -->
  <h2>Ein schie&szlig;endes Raumschiff</h2>
  <p align="justify">In diesem Kapitel m&ouml;chte ich euch kurz erkl&auml;ren, wie man ein kleines Raumschiff (bzw. jeden anderen Spieler, Gegner...) dazu bringen kann Sch&uuml;sse abzufeuern. Dieses Verhalten ist in Spielen wie MarsAttacks oder auch meinem Spiel <a href="Applets/Games/JrioGame/Jrio.html">J-Rio</a> unerl&auml;sslich und obwohl das Prinzip wirklich sehr einfach zu implementieren ist habe ich in letzter Zeit immer wieder Mails bekommen, die mich danach fragten (was nat&uuml;rlich keine Schande ist ;-). Also, nun wollen wir uns mal den Sch&uuml;ssen widmen.</p>
  <h3>Das Prinzip</h3>
  <p align="justify">Wie immer m&ouml;chte ich kurz auf das Prinzip und auch das Klassendesign eingehen. Java ist eine objektorientierte Programmiersprache und da ein Schuss in jedem Spiel auch sehr eigenst&auml;ndige Eigenschaften hat (Bewegung, Tests auf Kollisionen mit Gegener, Zerst&ouml;ren des Schusses...) ist es eigentlich selbstverst&auml;ndlich, eine eigene Klasse <i>Shot</i> einzuf&uuml;hren. Diese implementiert das Verhalten des Schusses (z. B. Bewegung), speichert seine Kooridinaten und zeichent den Schuss an der richtigen Stelle im Spiel. Ein Schuss wird im allgemeinen von einem Spieler erzeugt, also werden wir unserem Spieler eine Methode generateShot() hinzuf&uuml;gen, die ein Objekt der Klasse Shot erzeugt (mit den richtigen Startkoordinaten, der richtigen Schussrichtung...) und dieses Objekt an die aufrufende Klasse zur&uuml;ckgibt. Die aufrufende Klasse wird in meinem Beispielapplet die Klasse Main sein. Diese speichert den gerade erzeugten und von der Playerklasse zur&uuml;ckgegebenen Schuss in einem Array aus Shots. In der run - Methode der Klasse Main wird nun das Shot - Array durchlaufen, die Sch&uuml;sse werden bewegt, zerst&ouml;rt, wenn sie das Spielfeld verlassen und k&ouml;nnten auch auf Collisionen mit Gegnern, Levelelementen... getestet werden (in meinem Beispielapplet nicht implementiert). In der paint - Methode geschieht das selbe, auch hier wird das gesammte Array durchlaufen und alle Sch&uuml;sse werden gezeichnet. <br>
  Wenn ihr diesen Absatz und die dort dargestellten Zusammenh&auml;nge verstanden habt, dann braucht ihr eigentlich garnicht mehr weiterlesen. Denn die dazugeh&ouml;rigen Klassen sind wirklich extrem einfach und tun nichts Au&szlig;ergew&ouml;hnliches. Ge&uuml;bte Javaprogrammierer k&ouml;nnen sich also nun den Sourcecode runterladen und gleich mit eigenen Spielen loslegen. F&uuml;r alle anderen, die Interesse haben, werde ich noch kurz auf die wichtigen Punkte in den einzelnen Klassen eingehen.</p>
  <h3>Die Klasse Shot</h3>
  <p align="justify">Wie schon erw&auml;hnt speichert diese Klasse die Kooridinaten des Schusses, verf&uuml;gt &uuml;ber eine moveShot - Methode, die den Schuss in y - Richtung bewegt, sowie &uuml;ber eine drawShot() - Methode, die den Schuss zeichnet. Alle Methoden sind denkbar einfach, hier kommt nochmal der Sourcecode:</p>

  <ul>import java.awt.Graphics;<br>
  import java.awt.Color;<br><br>

  public class Shot<br>
  {<br>

          <ul>
          // Variablen<br>
          private int x_pos;<br>
          private int y_pos;<br><br>

          // Schussradius<br>
          private final int radius = 3;<br><br>

          // Konstruktor<br>
          public Shot(int x, int y)<br>
          {<br>
                  <ul>x_pos = x;<br>
                  y_pos = y;<br></ul>
          }<br><br>

          // liefert die y - Position zur&uuml;ck<br>
          public int getYPos()<br>
          {<br>
                  <ul>return y_pos;<br></ul>
          }<br><br>

          // bewegt den Schuss in y - Richtung<br>
          public void moveShot(int speed)<br>
          {<br>
                  <ul>y_pos += speed;<br></ul>
          }<br><br>

          // zeichnet den Schuss<br>
          public void drawShot(Graphics g)<br>
          {<br>
                  <ul>g.setColor(Color.yellow);<br>
                  g.fillOval(x_pos, y_pos, radius, radius);<br></ul>
          }<br></ul>
  }<br></ul>

  <h3>Die Klasse Player</h3>
  <p align="justify">Auch die Klasse Player ist denkbar einfach. Auch sie verf&uuml;gt &uuml;ber eine move - Methode (Bewegung in x - Richtung), eine draw - Methode und speichert die Kooridinaten des Schiffes. Die eigentlich interessante Methode ist die generateShot - Methode. Hier also nochmal kurz der Sourcecode:</p>

  <ul><br>
  import java.awt.Graphics;<br>
  import java.awt.Color;<br><br>

  public class Player<br>
  {<br>
          <ul>// Variablen<br>
          private int x_pos;<br>
          private int y_pos;<br><br>

          // Konstruktor<br>
          public Player(int x, int y)<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -