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

📄 leveleditordeu.html

📁 java tutorial all about java game design
💻 HTML
📖 第 1 页 / 共 2 页
字号:
                  this.parent = parent;<br><br>

                  // Gesamtzahl von Leveln<br>
                  levels_in_total = Integer.parseInt (((Applet)parent).getParameter                      (C_LevelEditor.total_levels));<br><br>

                  // Initialisierung des Arrays<br>
                  level_array = new Level [levels_in_total];<br>
                  </ul>
          }<br><br>

          /* Diese Methode liest alle Level in der HTML Seite ein, erzeugt ein<br>
          dementsprechendes Level und speichert es in dem Levelarray. */<br>
          public Level [] readLevels ()<br>
          {<br>
                  <ul>
                  for (int i = 1; i &lt;= levels_in_total; i++)<br>
                  {<br>
                          <ul>
                          // Neues Level generieren<br>
                          Level level = new Level ();<br><br>

                          // Alle wichtigen Informationen &uuml;ber das Level holen und                               setzen<br>
                          level.setAuthor (((Applet)parent).getParameter ("Level" + i +                          "_" + C_LevelEditor.author));<br>
                          level.setName (((Applet)parent).getParameter ("Level" + i +                            "_" + C_LevelEditor.name));<br>
                          level.setComment (((Applet)parent).getParameter ("Level" + i +                         "_" + C_LevelEditor.comment));<br><br>

                          // Levelzeilen einlesen und im Level speichern<br>
                          for (int j = 0; j &lt; C_LevelEditor.number_of_lines; j++)<br>
                          {<br>
                                  <ul>
                                  level.setLine (((Applet)parent).getParameter ("Level"                                  + i + "_Line" + j), j);
                                  </ul>
                          }<br><br>

                          // Level speichern<br>
                          level_array [i-1] = level;<br>
                          </ul>
                  }<br>

                  return level_array;<br></ul>
          }</ul>
  }
  </ul>

  <h4>Die Klasse Level</h4>
  <p align="justify">Nachdem wir nun alle Level eingelesen haben, wollen wir sie in unserem Spiel darstellen. Dazu haben wir die Klasse Level. Wie schon oben erw&auml;hnt ist die wichtigste Instanzvariable der Klasse Level das zweidimensionale Array stone_map. In diesem Array werden die Stoneobjecte gespeichert, die im jeweils zur Zeile und Spalte der Matrix &auml;quivalenten Rasterquadrat des Levels gezeichnet werden sollen. Die Klasse Level verf&uuml;gt zun&auml;chst einmal &uuml;ber diverse Methoden um die Informationen aus den Levelparametern zu speichern. Interessanter ist da schon die Methode setLine(...). In ihr wird die Information aus einem bestimmten Levelparameter, der ja eine Zeile der stone_map Matrix darstellt, in Stoneobjecte &uuml;bersetzt, die Details seht ihr dann im Sourcecode. Zu guter Letzt hat die Klasse Level noch die Methode paintLevel(...), die das gesammte Array des Levels durchl&auml;uft und die Stoneobjecte zeichnet.</p>

  <ul>
  import java.util.*;<br>
  import java.awt.*;<br><br>

  public class Level<br>
  {<br>
          <ul>
          // Variablen<br>
          private String author;<br>
          private String name;<br>
          private String comment;<br><br>

          // Levelmatrix, speichert die Steinobjecte<br>
          private Stone [] [] stone_map;<br>

          public Level ()<br>
          {<br>
                  <ul>
                  // Initialisierung der Matrix, alle Felder werden mit Null                             initialisiert<br>
                  stone_map = new Stone [C_LevelEditor.number_of_lines] <br>                             [C_LevelEditor.number_of_cols];<br>
                  </ul>
          }<br><br>

          // Methode &uuml;bersetzt jeweils eine Zeile der Leveldefinition in                         Levelelemente<br>
          public void setLine (String line, int line_index)<br>
          {<br>
                  <ul>
                  char [] entrys = line.toCharArray();<br><br>

                  // Durchlaufen jedes Buchstabens und &uuml;bersetzen in Stoneobject oder                    Null <br>
                  for (int i = 0; i &lt; C_LevelEditor.number_of_cols; i++)<br>
                  {<br>
                          <ul>
                          Stone stone = null;<br><br>

                          // Bei Buchstaben 'r' erzeugen eines roten Steines<br>
                          if (entrys[i] == 'r')<br>
                          {<br>
                                  <ul>stone = new Stone (line_index, i,                                                              Color.red);<br></ul>
                          }<br><br>

                          // Erzeugung der anderen Levelelemente analog<br>
                          ...<br><br>

                          // Ist kein bekannter Buchstabe vorhanden, so keinen Stein                             erzeugen<br>
                          else<br>
                          {<br>
                                  <ul>// do nothing<br></ul>
                          }<br><br>

                          // Stein im Array speichern<br>
                          if (stone == null)<br>
                          {<br>
                                  <ul>// do nothing</ul>
                          }<br>
                          else<br>
                          {<br>
                                  <ul>stone_map [line_index] [i] = stone;<br></ul>
                          }<br>
                          </ul>
                  }<br>
                  </ul>
          }<br><br>

          // set Methoden f&uuml;r die Levelinformationen<br>
          ...<br><br>

          // Methode zeichnet das Level<br>
          public void paintLevel (Graphics g)<br>
          {<br>
                  <ul>
                  // Gesammtes Stonearray durchlaufen<br>
                  for (int i = 0; i &lt; stone_map.length; i++)<br>
                  {<br>
                          <ul>
                          for (int j = 0; j &lt; stone_map[i].length; j++)<br>
                          {<br>
                                  <ul>
                                  Stone stone = stone_map [i][j];<br><br>

                                  // Entweder Stein zeichnen oder nichts zeichnen<br>
                                  if (stone == null)<br>
                                  {<br>
                                          <ul>// draw nothing<br></ul>
                                  }<br>
                                  else<br>
                                  {<br>
                                         <ul> stone.drawStone(g);<br></ul>
                                  }<br>
                                  </ul>
                          }<br></ul>
                  }<br><br>

                  // zeichnen der Informationen<br>
                  g.setColor (Color.yellow);<br>

                  g.drawString (comment, 50, 250);<br>
                  g.drawString (name, 50, 270);<br>
                  g.drawString (author, 50, 290);<br>
                  </ul>
          }<br>
          </ul>
  }
  </ul>

  <h3>Zusammenfassung</h3>
  <p align="justify">Wir haben also nun gelernt, wie man Level in der HTML - Seite definieren k&ouml;nnte, wie man die so definierten Level in das Spiel einlie&szlig;t und dort zum Erzeugen bzw. Zeichnen des Levels verwendet. Wie immer gibt es viele verschiedene M&ouml;glichkeiten, dies zu bewerkstelligen und nicht nur die eine, die wir hier vorgestellt haben. Obwohl wir euch mit diesem Leveleditor m&ouml;glicherweise einiges an Arbeit erspart haben (da ihr das Einlesen und Abspeichern fast eins zu eins &uuml;bernehmen k&ouml;nnt), steht euch die gr&ouml;&szlig;te Aufgabe noch bevor. Ihr m&uuml;sst euer Spiel darauf einrichten, mit jedem beliebigen Level zu funktionieren, was gar nicht so einfach ist und nat&uuml;rlich ist dieser Leveleditor noch in keinster Weise auf euer Spiel abgestimmt, was Zeilen- und Spaltenzahlt, die verwendeten Levelelemente... angeht. Also, viel Spa&szlig; beim Erweitern des Leveleditors und wenn ihr ein Spiel unter Verwendung dieses Editors geschrieben habt, w&uuml;rde ich mich freuen, wenn ihr mir es zusendet. Wie immer am Ende eines Kapitels k&ouml;nnt ihr euch den Sourcecode runterladen und euch das fertige Applet ansehen.</p>
  <p><a href="SourceCodes/Leveleditor/Leveleditor.zip">SourceCode download</a><br>
  <a href="Applets/Leveleditor/Leveleditor.html">Applet ansehen</a>
  <h4>N&auml;chstes Kapitel</h4>
<a href="ScrollingDeu.html">Scrolling</a>
  <!-- InstanceEndEditable -->
</div>
</td>
</tr>

<tr>
<td colspan="11" style="background-color:#990000" align="center">
<table width="100%" style="padding:0"><tr>
  <td width="88" bgcolor="#993300"><div align="center" style="font-size:10px; color: #FFFFFF;">  <a href="#top"> to top </a></div></td>
  <td><div align="center" style="font-size:10px; color: #FFFFFF;">
<a href="mailto:javacooperation@gmx.de">Fabian Birzele</a>, 2001-2004.<br>
web-design: <a href="http://www.freehand.str.ru/">Vadim Murzagalin</a>, 2004.
</div></td>
<td width="88">
</td>
</tr>
</table>

</td>

</tr>

</table>
</div>

</body>
<!-- InstanceEnd --></html>

⌨️ 快捷键说明

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