📄 shootingspaceshipdeu.html
字号:
{<br>
<ul>x_pos = x;<br>
y_pos = y;<br></ul>
}<br><br>
// Bewegt das Raumschiff in x - Richtung<br>
public void moveX(int speed)<br>
{<br>
<ul>x_pos += speed;<br></ul>
}<br><br>
// Erzeugt einen Schuss an der aktuellen Position des Schiffes<br>
//und liefert diesen zurück<br>
public Shot generateShot()<br>
{<br>
<ul>Shot shot = new Shot(x_pos, y_pos);<br><br>
return shot;<br></ul>
}<br><br>
// zeichnet den Spieler<br>
public void drawPlayer(Graphics g)<br>
{<br>
<ul>g.setColor(Color.red);<br>
int [] x_poly = {x_pos, x_pos - 10, x_pos, x_pos + 10};<br>
int [] y_poly = {y_pos, y_pos + 15, y_pos + 10, y_pos + 15};<br>
g.fillPolygon(x_poly, y_poly, 4);<br></ul>
}<br></ul>
}<br></ul>
<h3>Die Klasse Main</h3>
<p align="justify">Und zum Abschluss nochmal die Klasse Main. Ich habe alle, für die Erzeugung und "Verwaltung" der Schüsse unwichtigen Teile (Doppelpufferung...) aus dem Sourcecode hier entfernt (die Abschnitte, in denen etwas fehlt sind mit "..." gekennzeichnet). Diese Teile findet ihr dann im Sourcecode, den ihr runterladen könnt.</p>
<ul>import java.applet.*;<br>
import java.awt.*;<br><br>
public class Main extends Applet implements Runnable<br>
{<br>
<ul>// Variablen<br>
...<br>
private Player player;<br>
private Shot [] shots;<br><br>
// Konstanten<br>
private final int shotSpeed = -2;<br>
...<br><br>
// double buffering<br>
private Image dbImage;<br>
private Graphics dbg;<br><br>
public void init()<br>
{<br>
<ul>...<br>
// Erzeugen des Schussarrays<br>
shots = new Shot[5];<br></ul>
}<br><br>
...<br><br>
public void run ()<br>
{<br><br>
<ul>while (true)<br>
{<br>
<ul>
// Durchlaufe das Schussarray, bewege die Schüsse und <br>
// teste, ob ein Schuss das Spielfeld verlassen hat. <br>
// Hier könnten auch weitere Tests folgen (z. B. nach<br>
// Kollisionen mit Gegnern...<br>
for(int i=0; i<shots.length; i++)<br>
{<br>
<ul>if(shots[i] != null)<br>
{<br>
<ul>// Schüsse bewegen<br>
shots[i].moveShot(shotSpeed);<br><br>
// Testen ob der Schuss das Spielfeld verlassen<br> // hat, wenn ja, lösche ihn aus dem Array<br>
if(shots[i].getYPos() < 0)<br>
{<br>
<ul>// Schuss aus dem Array löschen <br>
shots[i] = null;<br></ul>
}<br><br>
// Weitere Operationen einfügen<br>
// ...<br>
// z. B. testen nach Kollisionen...<br>
// ...<br></ul>
}<br></ul>
}<br><br>
// Spieler bewegen<br>
...<br><br>
...<br></ul>
}<br></ul>
}<br><br>
public boolean keyDown(Event e, int key)<br>
{<br>
<ul>...<br><br>
else if(key == 32)<br>
{<br>
<ul>// neuen Schuss generieren und im Array speichern<br>
for(int i=0; i<shots.length; i++)<br>
{<br>
// nur dann im Array speichern, wenn ein Platz frei ist<br>
<ul>if(shots[i] == null)<br>
{<br>
<ul>shots[i] = player.generateShot();<br>
// break, um Schuss nur einmal zu speichern<br>
break;<br></ul>
}<br></ul>
}<br></ul>
}<br><br>
...<br></ul>
}<br><br>
public void paint (Graphics g)<br>
{<br>
<ul>// Spieler zeichnen<br>
...<br><br>
// Schüsse zeichnen<br>
for(int i=0; i<shots.length; i++)<br>
{<br>
<ul>if(shots[i] != null)<br>
{<br>
<ul>shots[i].drawShot(g);<br></ul>
}<br></ul>
}<br></ul>
}<br></ul>
}<br></ul>
<h3>Zusammenfassung</h3>
<p align="justify">Also, wie ihr euch nun hoffentlich überzeugen konntet ist das Ganze wirklich extrem einfach. Die verwendete Technik, nämlich das Speichern der Schussobjekte in einem Array und durchlaufen des Arrays in jedem run - Methoden - Aufruf und die dortige Anwendung von move... - Methoden auf die gespeicherten Objekte, ist eine wichtige Technik und kann auf viele andere Situationen übertragen werden. Ich hoffe, dass ich euch mit diesem Tutorial ein wenig helfen konnte, viel Spaß weiterhin und ihr findet den Sourcecode und das Beispielapplet wie immer am Ende dieses Kapitels (also zwei Zeilen tiefer ;-).</p>
<a href="SourceCodes/ShootingSpaceship/ShootingSpaceship.zip">SourceCode download (*.zip - Datei)</a><br>
<a href="Applets/ShootingSpaceship/ShootingSpaceship.html">Applet ansehen</a>
<h4>Nächstes Kapitel</h4>
<a href="PlatformGameBasicsDeu.html">Grundlagen eines Platfrom - Games</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 + -