Programmieren – die neusten Beiträge

Ausführen durch einen Tastendruck?

Hallo,

ich bin neu in Java und versuche jetzt, mein erstes kleines Spiel zu programmieren. Dafür muss sich aber das zu steuernde Objekt, sobald die Taste 'w' 's' 'a' oder 'd' gedrückt wird, solange in die jeweilige Richtung bewegen, bis eine andere Taste gedrückt wird. Allerdings kenne ich nur die Bedingung 'view.keyPressed()' oder '!view.keyPressed()'. Dennoch geht das mit diesen Bedingungen natürlich nicht. Könnte mir jemand helfen.

LG

PS: Hier der Code den ich bisher geschrieben habe:

import sas.*;
import java.awt.Color;

class SnakeTest {
  View view;
  Rectangle Hintergrund;
  Rectangle B1;
  Rectangle B2;
  Rectangle B3;
  Rectangle B4;
  Circle Points;
  Rectangle Snake;

  SnakeTest() {
    int x = Tools.randomNumber(70, 730);
    int y = Tools.randomNumber(70, 730); // Randomizer
    view = new View(800, 800);
    Hintergrund = new Rectangle(0, 0, 800, 800, new Color(0, 0, 153));
    B1 = new Rectangle(0, 0, 800, 50, new Color(153, 153, 153));
    B2 = new Rectangle(0, 0, 50, 800, new Color(153, 153, 153));
    B3 = new Rectangle(0, 750, 800, 50, new Color(153, 153, 153));
    B4 = new Rectangle(750, 0, 50, 800, new Color(153, 153, 153));
    Points = new Circle(x, y, 10, new Color(204, 0, 0));
    Snake = new Rectangle(360, 360, 40, 40, new Color(255, 102, 0)); // Erstellung

    while (!view.keyPressed('q')) {
      Snake.move(0, -2);

      if (view.keyPressed('w')) {
        Snake.move(0, -2);
      }

      if (view.keyPressed('s')) {
        Snake.move(0, 2);
      }

      if (view.keyPressed('d')) {
        Snake.move(2, 0);
      }

      if (view.keyPressed('a')) {
        Snake.move(-2, 0);
      } // Steuerung

      if (B1.intersects(Snake)) {
        new Text(380, 10, "ENDE", Color.RED);
        view.wait(400);
        System.exit(0);
      }

      if (B2.intersects(Snake)) {
        new Text(380, 10, "ENDE", Color.RED);
        view.wait(400);
        System.exit(0);
      }

      if (B3.intersects(Snake)) {
        new Text(380, 10, "ENDE", Color.RED);
        view.wait(400);
        System.exit(0);
      }

      if (B4.intersects(Snake)) {
        new Text(380, 10, "ENDE", Color.RED);
        view.wait(400);
        System.exit(0);
      } // Beendigung bei Fehler

      view.wait(10);
    } // Spielschleife

    new Text(380, 10, "ENDE", Color.RED);
    view.wait(400);
    System.exit(0); // Beendigung bei Tastendruck
  }
}
Computer, Schule, programmieren, Java

Java Zufallszahlen ohne Zurücklegen?

Für ein Teil eines größeren Projekts muss in in Java eine bestimmte Menge an Zufallszahlen erstellen, wobei sich keine doppeln darf.

Zuerst erstelle ich das neue Objekt "zufallszahl" der Klasse "Random".

In der äußeren For-Schleife wird dann für den Index "a" des Arrays "zufallsPosition[]" eine Zufallszahl erzeugt.

Die innere For-Schleife startet ebenfalls beim Anfangswert und läuft solange die Zählvariable "b" kleiner als die Summe aus dem aktuellen "a" und dem Startwert ist. Somit werden alle Indizes durchlaufen, die durch die vorherigen Durchgänge der äußeren For-Schleife schon eine Zufallszahl besitzen.

In der While Schleife wird dann geschaut, ob der Wert des Index "a" (also der oben erzeugten Zufallszahl) dem jeweiligen Wert des Index "b", also den vorherigen Zufallszahlen entspricht. Ist dies der Fall, bekommt das Array an der Stelle "a" eine neue Zufallszahl zugewiesen. Dies passiert (zumindest theoretisch) solange die aktuelle Zufallszahl "a" der aus der inneren For-Schleife "b" entspircht.

Es würde also bedeuten, dass er immer eine neue Zufallszahl erstellt, wenn diese schon im Array vorhanden ist.

Leider funktioniert das nicht und ich weiß selbst nach längerem Überlegen nicht warum :-(

Dann habe ich mal testweise das "==" in der While-Schleife durch ein "!=" ersetzt, d.h. es wird immer eine neue Zufallszahl erstellt bis sie der vorherigen entspricht, was überraschender Weise funktioniert (beispielsweise haben dann alle Indizes den Wert 4).

Code:

"==" in der While Schleife (so, wie es im Code steht)

"!=" in der While Schleife, funktioniert wie gewünscht.

Vielen Dank für Eure Hilfe!

Bild zum Beitrag
Computer, programmieren, Java, Informatik

Java- "Verbindungsaufbau abgelehnt"?

Hallo, hier der Code erstmal :

package EmailSending;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail555
{
    public static void main(String [] args){
        String to = "z";//change accordingly
        String from = "y"; //change accordingly
        String host = "x";//or IP address

        //Get the session object
        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);

        //compose the message
        try{
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
            message.setSubject("Ping");
            message.setText("Hello, this is example of sending email  ");

            // Send message
            Transport.send(message);
            System.out.println("message sent successfully....");

        }catch (MessagingException mex) {mex.printStackTrace();}
    }
}

Und dann kommt diese Fehlermeldung :

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: xyz; timeout -1;
 nested exception is:
   java.net.ConnectException: Verbindungsaufbau abgelehnt
   at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2209)
   at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:740)
   at javax.mail.Service.connect(Service.java:366)
   at javax.mail.Service.connect(Service.java:246)
   at javax.mail.Service.connect(Service.java:195)
   at javax.mail.Transport.send0(Transport.java:254)
   at javax.mail.Transport.send(Transport.java:124)
   at EmailSending.SendEmail555.main(SendEmail555.java:29)
Caused by: java.net.ConnectException: Verbindungsaufbau abgelehnt
   at java.base/sun.nio.ch.Net.connect0(Native Method)
   at java.base/sun.nio.ch.Net.connect(Net.java:579)
   at java.base/sun.nio.ch.Net.connect(Net.java:568)
   at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
   at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
   at java.base/java.net.Socket.connect(Socket.java:633)
   at java.base/java.net.Socket.connect(Socket.java:583)
   at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:359)
   at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
   at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2175)
   ... 7 more

Was habe ich falsch gemacht ? Immer kommt dieser Fehler, der Verbindungsaufbau würde abgelehnt werden...

PC, Computer, IT, programmieren, Java, Informatik

In C: Celsius in Fahrenheit?

Moin,

ich habe ein Programm geschrieben, welches Celsius in Fahrenheit umrechnet. Jedoch bekomme ich nicht die richtigen Ergebnisse, da ich ja rein theoretisch die Ergebnisse der Rechnung (Formel für Umrechnung: Temp(in Celsius) * 9/5 + 32 in einer float-Variable speichern müsste, oder?

Hier meine Header:

#ifndef TEMPERATURE
#define TEMPERATURE

#define MAX_LENGTH 10

#define converter(c)((c * (9 / 5)) + 32)

double output_temperatures(double temp[]);
int string_length(double temp[]);
double widening(double temp2[]);
/* double appendix(double temp3[], temp4[]); */

#endif

Hier meine Funktionen:

#include "aufgabe2930b.h"
#include <stdio.h>

double output_temperatures(double temp[])
{
  int i;
  printf("Temperaturen in Fahrenheit: ");

  for (i = 0; i < string_length(temp); ++i) {
    if (temp[i] <= 100 && temp[i] >= -273.15) {
      printf("%f  ", converter(temp[i]));
    }
    else {
      printf("Falsche Eingabe! ");
      break;
    }
  }

  printf("\n");
  return 0;
}

int string_length(double temp[])
{
  int i = 0;
  int length = 0;

  while (temp[i] != '\0') {
    ++length;
    ++i;
  }

  return length;
}

double widening(double temp[])
{
  int i = 0;

  while (i < MAX_LENGTH - 1) {
    if (temp[i] == '\0') {
      printf("Bitte anzuhängende Temperatur eingeben: ");
      scanf("%lf", &temp[i]);
      temp[i + 1] = '\0';
      break;
    }
    else {
      ++i;
    }
  }

  for (i = 0 ; i < string_length(temp); ++i) {
    if (temp[i] <= 100 && temp[i] >= -273.15) {
      printf("%f  ", converter(temp[i]));
    }
    else {
      printf("Falsche Eingabe! ");
      break;
    }
  }

  return 0;
}

Hier meine main:

#include <stdio.h>
#include "aufgabe2930b.h"

int main(void)
{
  double temp[MAX_LENGTH] = { 1, 2 };
  output_temperatures(temp);
  widening(temp);

  return 0;
}
Temperatur, programmieren, Informatik

Bei Button1_Click ein Label und einen Button erstellen C#?

Hallo,

Problem ist folgendes: ich möchte eine ToDo Liste in C# und XAML erstellen. Wenn man einen Knopf drückt, dann soll unten in einem StackPanel ein Label und ein Knopf, der das zugehörige Label sowie sich selbst beim klicken löscht, erstellt werden. In dem Label soll der Text von einer TextBox stehen. Man kann also sozusagen eine Aufgabe erstellen, dann wird sie in ein label mit einem Button geschrieben, und wenn man sie erledigt hat, klickt man auf den button und die Aufgabe verschwindet mit dem Button. Ich bin noch einsteiger und habe mal im Internet geguckt, konnte dort aber nichts hilfreiches finden.

Hier der Xaml-Code

  <Grid>

    <Grid.RowDefinitions>

      <RowDefinition Height="85"></RowDefinition>

      <RowDefinition></RowDefinition>

    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>

      <ColumnDefinition/>

      <ColumnDefinition Width="100"/>

    </Grid.ColumnDefinitions>

    <StackPanel Grid.ColumnSpan="2">

      <Label>Gebe eine Aufgabe ein</Label>

      <TextBox Margin="10, 5, 10, 0"></TextBox>

      <StackPanel Orientation="Horizontal">

      <Button Width="100" HorizontalAlignment="Left" Margin="10" Click="Button_Click">Bestätigen

      </Button>

        <Button Width="100" HorizontalAlignment="Left" Margin="10">Alles Löschen</Button>

      </StackPanel>

    </StackPanel>

  </Grid>

Nach möglichkeit soll das Label in der Linken Spalte und der Button in der rechten Spalte angezeigt werden.

Lg und Vielen dank schonmal

Bild zum Beitrag
Computer, programmieren, C Sharp

Figur bewegt sich nicht aber Kamera (Unity)?

Hallo zsm.

Ich habe folgendes Problem.

Ich bin gerade dabei eine Figur das Laufen beizubringen in Unity. Das Laufen Funktioniert aber das Bewegen/ herumschauen mit der Kamera funktioniert noch nicht ganz.

Wenn ich die Maus bewege sie sich die Kamer Ultra komisch aus und ich finde einfach das Problem nicht.

Die Anleitung habe ich von einem YouTube Video -> Unity Third-Person-Shooter Tutorial [Deutsch] #007 :: Kamera-Steuerung

Script ist das da hier.

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Laufen2 : MonoBehaviour

{

  public CharacterController cc;

  public GameObject player;

  public GameObject cam;

  public float speed;

  public float normalspeed;

  public float highspeed;

  public float gravity;

  private float MouseX;

  private float MouseY;

  private Vector3 movedir;

  void Start()

  {

    cc = GetComponent<CharacterController>();

  }

  // Update is called once per frame

  void Update()

  {

    MouseX = Input.GetAxis("Mouse X");

    MouseY = Input.GetAxis("Mouse Y");

    speed = normalspeed;

    if(cc.isGrounded)

    {

      movedir = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

      movedir *= speed;

    }

    cam.transform.Rotate(0, 0, -MouseY * 3);

    player.transform.Rotate(0, MouseX * 3, 0);

    movedir.y -= gravity * Time.deltaTime;

    cc.Move(movedir * Time.deltaTime);

  }

}

Schönen Tag noch

Bild zum Beitrag
programmieren, Unity

Meistgelesene Beiträge zum Thema Programmieren