Der Programmier-Thread

Spielt gerade: Driveclub
#24
ja lol!

Das ist C# und das Spiel Pong! Ich brings aber irgendwie nicht zum laufen^^



using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace WindowsGame2
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Texture2D myBall;
Vector2 spritePosition;

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}

/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// This is where it can query for any required services and load any non-graphic
/// related content. Calling base.Initialize will enumerate through any components
/// and initialize them as well.
/// </summary>
protected override void Initialize()
{
// TODO: Add your initialization logic here

base.Initialize(spritePosition=new Vector2((graphics.GraphicsDevice.Viewport.Width-myBall.Width)/2,(graphics.GraphicsDevice.Viewport.Heigth-myBall.Height)/2););
}

/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent(myBall = ContentLoadException.Load<Texture2D>("Ball");)
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);

// TODO: use this.Content to load your game content here
}

/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}

/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Add your update logic here

base.Update(gameTime);
}

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
spriteBatch.Draw(myBall,spritePosition,Color.White);
spriteBatch.End()

base.Draw(gameTime);
}
}
}

 
PSN-Name: chrizeliq
#26
Original von spynose
Wie siehts denn aus mit Microcontroller Programmierung mit C. Schon mal jemand drangewagt, oder macht das beruflich? Vor allem mit Atmels? Ich hab mich auf http://www.mikrocontroller.net/ umgesehen und überleg mir, was man sinnvolles bzw. aus Spaß entwerfen könnte, was dann mit einem Microcontroller gesteuert wird.
Genau das hatte ich im April oder so vor. Microcontroller-Programmierung klingt sehr interessant weil die Hardware noch recht ueberschaubar ist und man viel tiefer eingreift. Mir persoenlich wuerd aber eher Assembler-Programmierung darauf interessieren, weil mir C schon zu abstrakt ist.

Jetzt bin ich leider jemand, der macht es entweder ganz oder gar nicht. Meine Idee war also, mir erst mal die Elektronik-Grundlagen anzueignen und evtl eine eigene kleine Platine zusammenzuloeten mit einem Amtel und ein paar Dioden oder so.

Wie auch hier schon anderorts berichtet habe ich mir dann ein bekanntes englisches Grundlagenbuch zur Elektronik zugelegt, aber das ruht im Moment etwas. Natuerlich koennt ich mir jetzt irgendeine fertige Platine zulegen die man irgendwie an den Rechner haengt oder gleich einen Emulator, aber was hab ich dann davon?

Mir gehts nicht um das Endergebnis, sondern das was ich dafuer lerne um das Ziel zu erreichen, das ist doch viel interessanter.

Das Problem ist halt wieder nur, man braucht schon einiges an Wissen und muss doch ein paar Sachen lernen. Habe schon ueberlegt mir vielleicht doch mal einen Kosmos Elektro-Baukasten zuzulegen um einfach mal generell ein paar Dinge einfach (ohne Loeten) ausprobieren zu koennen und weiter motiviert zu werden.
 

Shrink

You can always respawn little princess!
systems, systems, systems, systems, systems
PSN-Name: Shrink21
#27
Ich hab Pong mal in C++ programmiert (mit Qt-Klassenbibliothek).
Wird dir aber nix bringen schätz ich...

@chrizel: Also wenn dir C zu abstrakt ist, dann versteh ich nicht, wieso du Assembler lernen willst. Da wär sowas wie Prolog oder so angebrachter.
 
#28
@chrizel: Also das wirst du echt viel an Arbeit vor dir haben. Hab demnächst ein besonderst schönen Fall, der ich von meiner Arbeit bekommen habe. Und muss dafür auch erstmal einige Sachen dazulernen u. auch ein wenig entspannen. :okay: Aber ned schlecht was du dir da vorgneommen hast ....
 

Planet

50% water, 50% air, the glass is always full!
PSN-Name: PlanetJumble
#31
LOL! Oder: Kommst du mit zu mir nach Hause, dort zeige ich dir meine LVL99 MF-Sorc mit Mephbot!?

Oder: Willst du mal meinen MP3-Raid-Cluster anfassen?

Oder: Wusstest du schon, dass man bei der Matrix vor der ersten Bullet-Time-Szene auf dem Dach in der Spiegelbrille des Agenten den Kameramann sehen kann?

:lol:
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
#33
Hab ein Problem. Will ein Pong Spiel in Java mit BlueJ programmieren und hab da ein paar Sachen versucht, die aber momentan nicht so laufen wollen. Erstmal hab ich eine Klasse "Tisch", womit ich nen Bildschirm aufrufe, worauf man alles sehen kann. Dieser wird aber nach nem bestimmten Wert erstellt, der vorher immer erst eingegeben werden muss.

import sum.kern.*;
/**
* @author
* @version
*/
public class Tisch
{
// Objekte
Bildschirm derBildschirm;
// Konstruktor
public Tisch(int b)
{
derBildschirm = new Bildschirm(b,b);
}

// Dienste
public void fuehreAus()
{

}
}
Dann habe ich eine Klasse Ball, mit der ich auf die Klasse Tisch zugreife. Die ist zwar nicht hundertprozentig fertig, aber das Grundgerüst steht eigentlich schon...

import sum.kern.*;
import sum.werkzeuge.*;
/**
* @author MiMaMartin
* @version 1.0
*/
public class Kugel extends Stift
{
// Bezugsobjekte
double a = 0.1;
Rechner meinRechner;
Tisch meinTisch;
// Attribute

// Konstruktor
public Kugel(int b)
{
super();
meinRechner = new Rechner();
meinTisch = new Tisch(b);
}

// Dienste
public void zeichneKugel()
{
zeichneKreis(10);
}
public void loescheKugel()
{
radiere();
zeichneKreis(10);
normal();
}
public void Richtung()
{
dreheUm(meinRechner.ganzeZufallszahl(0,360));
}

public void Bewegung()
{
zeichneKugel();
loescheKugel();
bewegeUm(a);
zeichneKugel();
}
public void Kollision()
{
if(hPosition()>(800-10))
{
dreheUm(180-2*winkel());
}
else if(hPosition()<0)
{
dreheUm(180-2*winkel());
}
else if(vPosition()>(800-10))
{
dreheUm(360-2*winkel());
}
else if(vPosition()<0)
{
dreheUm(360-2*winkel());
}

}
}
Jetzt hab ich noch eine Klasse Hauptprogramm, welche sich auf die Klasse Ball bezieht, um das ganze einfach mal zu testen. Sind jetzt noch 1-2 Sachen drin, die sich auf andere Sachen beziehen, die erstmal wieder ausgebaut wurden, aber bald noch reinkommen.

import sum.kern.*;
/**
* @author
* @version
*/
public class Hauptprogramm
{ boolean running = true;
// Objekte
Kugel dieKugel;
Tastatur dieTastatur;
Spieler1 derBalken;

// Konstruktor
public Hauptprogramm(int b)
{
dieKugel = new Kugel(b);
dieTastatur = new Tastatur();
derBalken = new Spieler1();
}

// Dienste
public void fuehreAus()
{
dieKugel.bewegeBis(100,100);
dieKugel.Richtung();
while ( running = true)
{
dieKugel.Kollision();
dieKugel.Bewegung();

}
}
}
Wenn ich das ganze nun starte, kriege ich die Fehlermeldung "NullPointerException" an der Stelle "ZeichneKreis(10);" in der Klasse Kugel.

public void zeichneKugel()
{
zeichneKreis(10);
}
Keine Ahnung was der jetzt von mir will. Eigentlich will ich es ja auch noch so einbauen, dass der mit Hilfe der Variable b die Grenzen bei der Kollision selbst setzt, aber das will vorne und hinten nicht funktioneren. Vielleicht kann mir ja jemand helfen.
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
#37
woot? Code vom Stift? was meint ihr denn jetzt genau damit? Ich lerne das nur in der Schule und dank unserem Lehrer etwas oberflächlich :ugly: Weiß grad nciht was ihr meint...

Also die Methode ist nicht von mir selber. In BlueJ gibts die Klasse Stift schon und darin ist dann die Methode zeichneKreis enthalten.
 
PSN-Name: chrizeliq
#38
Programmieranfaenger mit Java zu quaelen ist doch dumm, das schreckt doch eher ab und man muss sich mit unwichtigkeiten beschaeftigen (klar, jetzt kommen wieder die Leute die sagen "aber "Objektorientierung" gleich am Anfang ist sinnvoll".... nenene)

Lernt Python.

Aber du kannst es dir ja nicht aussuchen. Hast du wirklich nur den Code? Ein Fehler ist jetzt nicht sofort offensichtlich, zumindest mit dem was gepostet wurde. Bitte bitte poste Code nicht in diesen QUOTE-Bloecken, wir haben dafuer extra CODE-Bloecke:

Code:
public void zeichneKugel()
{
   zeichneKreis(10);
}
 
PSN-Name: Papa_Justify
#39
Naja chrizel... Python ist jetzt auch nicht so trivial. Bin zwar auch nich für Java gleich am Start, aber es ist eine der einfachsten Programmiersprachen, wo gibt!
Für Einsteiger bleiben immernoch Basic und Pascal, wobei sich diese nur zum Lernen der grundlegenden Programmierkonzepte eignen, mit den richtig bitchigen Programmiersprachen ungefähr soviel zu tun haben, wie [hier passenden Vergleich einfügen]

Um zum eigentlichen Thema zurückzukommen: Offenbar liegt der Fehler darnin, dass bei der Methode "ZeichneKreis" entweder ein falsches Argument übergeben wurde oder dass beim Aufruf die Klasse zu der "ZeichneKreis" oder "ZeichneKugel" gehört, noch nicht initialisiert wurde. Daher ein Zugriff auf einen Null-Pointer...
 
PSN-Name: chrizeliq
#40
Naja chrizel... Python ist jetzt auch nicht so trivial. Bin zwar auch nich für Java gleich am Start, aber es ist eine der einfachsten Programmiersprachen, wo gibt!
Noe. Java ist nicht einfach. Fuer einen Anfaenger ist so vieles unwichtiges Zeug -- allein schon bei einem Hello World Programm. Python ist einfach - fast Pseudocode. In Java wirst du sofort mit Klassen und einer main-Methode konfrontiert, das ist fuer Anfaenger unnoetig verwirrend.

Für Einsteiger bleiben immernoch Basic und Pascal, wobei sich diese nur zum Lernen der grundlegenden Programmierkonzepte eignen, mit den richtig bitchigen Programmiersprachen ungefähr soviel zu tun haben, wie [hier passenden Vergleich einfügen]
Ich programmiere seit fast 10 Jahren (davon lange beruflich) in Object Pascal (aka Delphi) Ich halte es auch nicht fuer gut als Anfaenger, allein schon die Tatsache dass zwischen Prozeduren und Funktionen unterschieden wird, ist doch Kaese. Alles zu verwirrend, alles zu kompliziert.
 
Zuletzt editiert:
Top