Visual Studio – die besten Beiträge

An alle C# & Visual Studio Programmierer?

Hey Developers,

hier mal etwas Hate mit einer wichtigen Frage.

Ich versuch zurzeit ASP.Net Core mit C# für Web Backend zu lernen. Ich kann bisher HTML, CSS, JavaScript, React, Python (Django) und etwas Java (Spring Boot) sowie etwas C++ (Arduino).

Das war alles ganz entspannt zu lernen, aber C# mit Visual Studio gibt mir den Rest, ich schaffe es einfach nicht ein Projekt zu erstellen.

Mein Problem dabei ist, dass alle Dokus und YT Videos auf "vorgefertigte" Projektvorlagen setzten, allerdings schein Microsoft durchgehend an der UI von Visual Studio und an den Vorlagen etwas zu ändern und das macht mich nach meinem 20. Anlauf wahnsinnig. Egal welches Video ich anschauen (selbst wenn es nur 6 Monate alt ist) das komplette Projekte hat im Video eine ganz andere Struktur (und ja ich habe genau die selbe Vorlage mit der selben Version von .NET) und wenn ich halt keine Ahnung von der Umgebung habe kann ich das auch schlecht irgendwie nachbauen.

Daher mal ne Frage: Mach ich hier etwa irgendwas falsch (ne falsche Einstellung im Installer) oder ändert Microsoft wirklich alle paar Monate etwas an der Umgebung oder an Visual Studio?

Ich stelle mir das später auch einfach nur nervig vor, wenn man mal die Sprache & Umgebung kann, aber bei jedem neuem Projekt eine andere Projektstruktur hat.

Nutzt ihr die Vorlagen überhaupt, oder macht das einfach nur jeder, um seine Videos einfacher zu halten?

Erstellt ihr bei einem neuem Projekt einfach ein leeres .NET Projekt und erstellt dort selbst die Grundstruktur, oder verwendet ihr wirklich die vorgefertigten Projekte wie z.B. "React and ASP.NET Core" (welche euch eine Wetter-Seite erstellt) und löscht dann erstmal sämtlichen Code von der Wetter-Seite aus den Dateien und fangt dann mit eurem Projekt an?

ASP.NET, C Sharp, Programmiersprache, Visual Studio

C# Twitch Bedges auslesen?

Hallo, ich wollte in C# einen Twitch Bot porgrammieren, aber die auslesung funktioniert nicht. Falls sich das jemand mal anschauen kann, hier ist der Code:

using System;
using System.Linq;
using System.Text;
using Twitch_IRC;
namespace Twitch_IRC
{
public class irc_globaluserstate
{
public bool IsMod { get; private set; } = false;
public bool IsBroadcaster { get; private set; } = false;
public bool IsVip { get; private set; } = false;
public List<string> BadgesRaw { get; }
private string rawdata { get; }
public irc_globaluserstate(string rawdata)
{
this.rawdata = rawdata;
string[] tags = rawdata.Split(' ')[0].Remove(0, 1).Split(';');
foreach (string tag in tags)
{
string[] splittag = tag.Split('=');
if (splittag.Length >= 2)
switch (splittag[0].ToLower())
{
case "badges":
BadgesRaw = splittag[1].Split(',').ToList();
foreach (string badgeraw in BadgesRaw)
{
string badge = badgeraw.Split('/')[0];
switch (badge)
{
case "broadcaster":
IsBroadcaster = true;
Program.IsUserBroadcaster = true;
Console.WriteLine("Broadcaster");
break;
case "moderator":
IsMod = true;
Program.IsUserModerator = true;
Console.WriteLine("Moderator");
break;
case "subscriber":
break;
case "vip":
IsVip = true;
Program.IsUserVip = true;
Console.WriteLine("Vip");
break;
case "premium":
break;
}
}
break;
}
}
}
}
internal class Program
{
public static bool IsUserBroadcaster = false;
public static bool IsUserModerator = false;
public static bool IsUserVip = false;
//Main
static void Main(string[] args)
{
IRC_Controller.MessageRecieved += new Program().KeksCommand;
IRC_Controller.MessageRecieved += new Program().shoutoutCommand;
IRC_Controller controller = new IRC_Controller("gg265_Bot", "____", "gg265_live");
}
public static EventHandler<MessageSentArgs> MessageSent;
protected virtual void OnMessageSent(string message)
{
MessageSent?.Invoke(this, new MessageSentArgs(message));
}
//!Kekse
public void KeksCommand(object source, MessageRecievedArgs args)
{
if (args.message.Split(' ')[0].ToLower() == "!kekse")
OnMessageSent($"/me gibt @{args.username} 4 Kekse.");
}
//!shoutout <user>
public void shoutoutCommand(object source, MessageRecievedArgs args)
{
if (args.message.Split(' ')[0].ToLower() == "!shoutout")
{
Console.WriteLine(IsUserBroadcaster);
Console.WriteLine(IsUserModerator);
Console.WriteLine(IsUserVip);
if (IsUserBroadcaster || IsUserModerator || IsUserVip)
{
OnMessageSent($"/me SHOUTOUT AN @{args.message.Split(' ')[1]}!!");
}
}
}
}
class MessageSentArgs
{
public string message { get; }
public MessageSentArgs(string message)
{
this.message = message;
}
}
}

LG gg265

C Sharp, Code, Visual Studio

C++ - "Funktion nimmt keine 0 Argumente." Behebung?

Schönen guten Abend!

Das Problem ist etwas anders als in der Frage, jedoch ist es für mich schwer dies in einem Satz zu erklären. Nun erstmal mein C++ Quellcode zum Verständnis:

#include <iostream>


int numbCount(int count);


int main()
{
	int num1 = numbCount();
	int num2 = numbCount(2);

  ...

}
  
  int numbCount(int count = 1) 
  {
  	int userNumb;
  	std::cout << "Please enter the " << count << ". integer: ";
  	std::cin >> userNumb;
  
  
  	return userNumb;
  }

Also, wie man sehen kann hat meine Funktion numbCount() Parameter. Außerdem bevorzuge ich es die Funktionsdefinition unter der Main() Funktion zu schreiben.

int numbCount(int count);

int main()
{
...
}

int numbCount(int count = 1)
{
...
}

Somit muss ich die Funktionsdeklaration über der Main() Funktion "erwähnen", damit ja der Compiler weiß, dass die Definition noch kommt. Dies scheint in diesem Fall bei einer Funktion mit Standardparameter für VS ein Problem darzustellen - Fehler "numbCount: function does not take 0 arguments".

Wenn ich jedoch die Funktionsdefinition von "numbCount()" über die Main() Funktion packe, funktioniert alles normal.

int numbCount(int count = 1)
{
...
}

int main()
{
...
}

Habe bereits versucht den Parameter in der "erwähnten" Funktionsdeklaration zwischen den runden Klammern ebenfalls einzufügen, also

int numbCount(int count = 1);

jedoch kommt dann der Fehler 'numbCount': redefinition of default argument: parameter 1

FRAGE:
Gibt es eine Möglichkeit in einer Funktion Standardparamter (also wenn kein Wert in Funktionsaufruf zwischen Klammern angegeben -> standardm. Wert 1) zu haben aber trotzdem die Funktionsdefinition unter der Main() Funktion zu belassen?

int numbCount(int count);

int main()
{
    int num1 = numbCount(); // Kein Wert angegeben - Std. Wert 1
    int num2 = numbCount(2);
}

int numbCount(int count = 1)
{
...
}

Vielen Dank und einen schönen Abend! :)

Computer, Software, Programm, programmieren, Anwendung, Funktion, Cplusplus, Anwendungsentwicklung, Argumente, Code, CPP, Fehlerbehebung, fehlercode, Programmiersprache, Softwareentwicklung, Visual Studio, Fehlermeldung, Parameter

Wie korrigiere ich meinen CountSort-Code, damit er absteigend sortiert?

Hallo!

Meine Aufgabe: Ich soll eine Count Sort implementieren, und zwar so, dass man beim Programm aufrufen im Argument auswählen kann, ob das Array aufsteigend oder absteigend sortiert werden soll.

Mein Problem: Das Aufsteigen sortieren funktioniert, aber das Absteigen sortiert ebenfalls aufsteigend, obwohl es absteigend sortieren soll.

Meine Annahmen: Eigentlich gehe ich davon aus, dass meine Funktion "count_sort_write_output_array", welche das sortierte Array basierend auf der angegebenen Sortierrichtung erstellt, korrekt ist. Schließlich ist es einfach der gleiche Code wie für ASCENDING (aufsteigend), bloß mit geringfügigen Änderungen.

Ich denke eher, dass es daran liegt, dass mein Code erst gar nicht DESCENDING (absteigend) 'auswählt', wenn "desc" als Argument gegeben wird. Ich habe als Standardverhalten ASCENDING gesetzt (also falls kein Argument gegeben wird, oder ein falsches Argument gegeben wird, wird es aufsteigend sortiert), also dachte ich vielleicht, dass entweder

if (strcmp(order, "asc") == 0)

oder

else if (strcmp(order, "desc") == 0)

(in der SortDirection Funktion) irgendwie "falsch" sind, sodass die Sortierfunktion immer das Standardverhalten auswählt. (Also ASCENDING)

Als Debug-Versuch habe ich:

printf("Sortdirection must be defined. Using default: ASCENDING\n");

eingefügt, um zu schauen ob das wirklich der Fall ist. Dennoch wird dieser printf nie gezeigt, selbst wenn ich kein Argument eingebe. Was mich ziemlich verwirrt. Bricht es vorher ab?

Meine 'Frage' an euch: Ich würde es sehr schätzen, wenn jemand einen Blick darauf werfen könnte. Eventuell kann jemand erkennen, woran mein Semantikfehler liegt.

Aber würde ich es auch schätzen, wenn mir jemand andere Debug-Ideen nennen könnte. Ich habe noch nicht viel mit 'Debugging-Methoden' beschäftigt und habe meine Probleme bisher größtenteils mit printfs gelöst. Aber vielleicht gibt es da etwas leichteres!

Vielen Dank!

Bild zum Beitrag
Computer, programmieren, Code, Informatik, Programmiersprache, Visual Studio, Algorithmus, debugging, Sortieralgorithmus

Box collider funktioniert nicht mit rb.MovePosition?

Ich habe mit Unity angefangen und habe ein kleines problem:
Und zwar habe ich eine kamera mit boxcollider und einen terrain mit terraincollider. Nur leider kann ich die kamera durch das terrain durchschieben! Ich habe schon den verdacht dass es an rb.MovePosition liegt aber weiß nicht wie ich das reparieren kann! Alles wie zumbeispiel rigidbody sind auf der kamera da bin ich mir sicher! Es kommt auch kein Fehler in der Konsole!
Mein Kompletter code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SmoothMove : MonoBehaviour
{
   public float rotationSpeed = 2.0f;
   public float smoothRotationFactor = 5.0f;
   private float yaw = 0.0f;
   private float pitch = 0.0f;

   public float jumpForce = 10.0f;
   public float moveSpeed = 20.0f;
   private Rigidbody rb;
   private bool isMovingForward = false;

   private void Start()
   {
       rb = GetComponent<Rigidbody>();
   }

   private void Update()
   {
       HandleCameraRotation();

       if (Input.GetKeyDown(KeyCode.Space))
       {
           Jump();
       }

       if (Input.GetKeyDown(KeyCode.UpArrow))
       {
           StartMovingForward();
       }

       if (Input.GetKeyUp(KeyCode.UpArrow))
       {
           StopMovingForward();
       }

       if (isMovingForward)
       {
           MoveForward();
       }
   }

   private void HandleCameraRotation()
   {
       if (Input.GetMouseButton(0))
       {
           yaw += rotationSpeed * Input.GetAxis("Mouse X");
           pitch -= rotationSpeed * Input.GetAxis("Mouse Y");
           Quaternion targetRotation = Quaternion.Euler(pitch, yaw, 0.0f);
           transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, Time.deltaTime * smoothRotationFactor);
       }
   }

   private void Jump()
   {
       rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y + 5, rb.velocity.z);
   }

   private void StartMovingForward()
   {
       isMovingForward = true;
   }

   private void StopMovingForward()
   {
       moveSpeed = 20f;
       isMovingForward = false;
   }

   private void MoveForward()
   {
       moveSpeed += 0.1f;
       Vector3 forwardDirection = transform.forward;
       forwardDirection.y = 0.0f; // Keep movement on the horizontal plane
       rb.MovePosition(rb.position + forwardDirection * moveSpeed * Time.deltaTime);
   }
}

Ich würde mich sehr freuen wenn ihr mir helft. Danke :)

C Sharp, Code, Programmiersprache, Spieleentwicklung, Unity 3D, Visual Studio, Unity

Meistgelesene Beiträge zum Thema Visual Studio