Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Open WebUI
#1
Arbeitet hier noch jemand mit LM Studio und verwendet Qwen2.5-Coder-14B?
Besteht Interesse an einem Austausch von Erfahrung beim Programmieren?
Vielleicht sogar an gemeinsamen Projekten?

Dann meldet Euch mal, gerne auch in Discord.
Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




Zitieren
#2
Mein Gott, LM-Studio hatte ich schon längst wieder vergessen.*lol Aber dein Post macht neugierig, also wieder her damit. Dein Model gleich danach installiert und mir ein Spiel ala Space Invader programieren lassen.^^
Code:
// Space Invaders Game in JavaScript

const canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.width = 800;
canvas.height = 600;
const ctx = canvas.getContext('2d');

// Player class
class Player {
  constructor(x, y) {
    this.x = x;
    this.y = y;
    this.width = 50;
    this.height = 20;
    this.speed = 5;
  }

  draw() {
    ctx.fillStyle = 'blue';
    ctx.fillRect(this.x, this.y, this.width, this.height);
  }

  moveLeft() {
    this.x -= this.speed;
  }

  moveRight() {
    this.x += this.speed;
  }
}

// Invader class
class Invader {
  constructor(x, y) {
    this.x = x;
    this.y = y;
    this.width = 30;
    this.height = 20;
    this.speed = 1;
  }

  draw() {
    ctx.fillStyle = 'red';
    ctx.fillRect(this.x, this.y, this.width, this.height);
  }

  moveDown() {
    this.y += this.speed;
  }
}

// Bullet class
class Bullet {
  constructor(x, y) {
    this.x = x;
    this.y = y;
    this.width = 5;
    this.height = 10;
    this.speed = 5;
  }

  draw() {
    ctx.fillStyle = 'yellow';
    ctx.fillRect(this.x, this.y, this.width, this.height);
  }

  moveUp() {
    this.y -= this.speed;
  }
}

// Game initialization
const player = new Player(canvas.width / 2, canvas.height - 30);
const invaders = [];
for (let i = 1; i < 7; i++) {
  for (let j = 0; j < 5; j++) {
    invaders.push(new Invader(i * 70, j * 30));
  }
}
const bullets = [];

// Event listeners
document.addEventListener('keydown', (e) => {
  if (e.key === 'ArrowLeft') {
    player.moveLeft();
  } else if (e.key === 'ArrowRight') {
    player.moveRight();
  } else if (e.key === 'Space') {
    bullets.push(new Bullet(player.x + player.width / 2, player.y));
  }
});

// Game loop
function gameLoop() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  player.draw();

  invaders.forEach(invader => {
    invader.draw();
    invader.moveDown();
  });

  bullets.forEach(bullet => {
    bullet.draw();
    bullet.moveUp();
  });

  // Collision detection
  bullets.forEach((bullet, index) => {
    invaders.forEach((invader, invaderIndex) => {
      if (bullet.x < invader.x + invader.width &&
          bullet.x + bullet.width > invader.x &&
          bullet.y < invader.y + invader.height &&
          bullet.y + bullet.height > invader.y) {
        invaders.splice(invaderIndex, 1);
        bullets.splice(index, 1);
      }
    });
  });

  requestAnimationFrame(gameLoop);
}

gameLoop();

Als Anleitung kam:"Um das Spiel zu spielen, fügen Sie einfach den obigen Code in Ihre HTML-Datei ein und führen Sie ihn aus. Mit den Pfeiltasten nach links und rechts können Sie den Spieler bewegen, und mit der Leertaste können Sie schießen. Viel Spaß beim Spielen!"

Teste ich mal morgen.Cool
Zitieren
#3
... im Moment gecancelt.
ich möchte mir erst noch Open WebUI genau anschauen und melde mich dann, wofür ich mich entscheide.
Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




Zitieren
#4
Huch wir haben gleichzeitig gepostet^^.
Ich habe auch Blut geleckt. Big Grin
Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




[-] The following 1 user says Thank You to Xenos Yifu for this post:
  • Dorena Verne
Zitieren
#5
Big Grin

Code:
# Importieren der notwendigen Bibliotheken
import pygame
import time
import random

# Initialisieren von Pygame
pygame.init()

# Festlegen der Farben
weiß = (255, 255, 255)
schwarz = (0, 0, 0)
rot = (213, 50, 80)
grün = (0, 255, 0)
blau = (50, 153, 213)

# Festlegen der Schriftarten
schriftart = pygame.font.SysFont("bahnschrift", 25)
schlussmeldung_schriftart = pygame.font.SysFont("comicsansms", 50)

# Initialisieren des Spielbretts
spiel_breite = 800
spiel_höhe = 600
spiel_fenster = pygame.display.set_mode((spiel_breite, spiel_höhe))
pygame.display.set_caption('Snake-Spiel')

# Festlegen der Spielgeschwindigkeit
spiel_clock = pygame.time.Clock()
snake_geschwindigkeit = 15

# Größe und Schrittgröße des Snakes festlegen
snake_block = 10
snake_schritt = 10

# Funktion zum Anzeigen des Textes auf dem Spielfeld
def text_anzeigen(text, schriftart, farbe, x, y):
    fenster_text = schriftart.render(text, True, farbe)
    spiel_fenster.blit(fenster_text, [x, y])

# Funktion für das Ende des Spiels und die Anzeige der Schlussmeldung
def schluss_botschaft(spiel_fenster, schriftart):
    fenster_text = schlussmeldung_schriftart.render("Verloren! drücke C zum Wiederholen oder Q zum Beenden", True, rot)
    spiel_fenster.blit(fenster_text, [spiel_breite / 6, spiel_höhe / 3])
    pygame.display.update()

# Hauptfunktion des Spiels
def snake_spiel():
    game_over = False
    game_close = False

    # Startposition des Snakes
    x1 = spiel_breite / 2
    y1 = spiel_höhe / 2

    # Änderung der Position des Snakes
    x1_change = 0      
    y1_change = 0

    # Liste für das Snake-Gestell erstellen
    snake_List = []
    Länge_des_Snakes = 1

    # Position der Frucht zufällig generieren
    frucht_x = round(random.randrange(0, spiel_breite - snake_block) / 10.0) * 10.0
    frucht_y = round(random.randrange(0, spiel_höhe - snake_block) / 10.0) * 10.0

    while not game_over:

        # Loop für das Spielende und Anzeige der Schlussmeldung
        while game_close == True:
            spiel_fenster.fill(blau)
            schluss_botschaft(spiel_fenster, schlussmeldung_schriftart)
            text_anzeigen("Deine Länge: " + str(Länge_des_Snakes - 1), schriftart, weiß, spiel_breite / 6, spiel_höhe / 2.5)
            pygame.display.update()

            # Überprüfung auf die Tastendrücke
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        snake_spiel()

        # Überprüfung auf die Tastendrücke für die Bewegung des Snakes
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -snake_schritt
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_schritt
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_schritt
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_schritt
                    x1_change = 0

        # Überprüfung auf Ausstieg aus dem Spielfeld
        if x1 >= spiel_breite or x1 < 0 or y1 >= spiel_höhe or y1 < 0:
            game_close = True

        # Aktualisierung der Position des Snakes
        x1 += x1_change
        y1 += y1_change
        spiel_fenster.fill(blau)
        pygame.draw.rect(spiel_fenster, grün, [frucht_x, frucht_y, snake_block, snake_block])
        snake_öhrchen = []
        snake_öhrchen.append(x1)
        snake_öhrchen.append(y1)
        snake_List.append(snake_öhrchen)

        # Überprüfung auf Überschneidung des Snakes
        if len(snake_List) > Länge_des_Snakes:
            del snake_List[0]

        for x in snake_List[:-1]:
            if x == snake_öhrchen:
                game_close = True

        # Anzeige der Snake auf dem Spielfeld
        for segment in snake_List:
            pygame.draw.rect(spiel_fenster, schwarz, [segment[0], segment[1], snake_block, snake_block])

        # Aktualisierung des Displays und Verzögerung des Spiels
        pygame.display.update()

        # Überprüfung auf das Auffangen der Frucht und Anpassung der Länge des Snakes
        if x1 == frucht_x and y1 == frucht_y:
            frucht_x = round(random.randrange(0, spiel_breite - snake_block) / 10.0) * 10.0
            frucht_y = round(random.randrange(0, spiel_höhe - snake_block) / 10.0) * 10.0
            Länge_des_Snakes += 1

        # Steuerung der Spielgeschwindigkeit
        spiel_clock.tick(snake_geschwindigkeit)

    pygame.quit()
    quit()

# Aufruf der Hauptfunktion des Spiels
snake_spiel()
Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




[-] The following 1 user says Thank You to Xenos Yifu for this post:
  • Dorena Verne
Zitieren
#6
Meine Güte, was eine Geburt. Jetzt habe ich eine eigene KI.
Open WebUI mit Qwen2.5-Coder-14B und zwei Modellen Claude und eine für meine Bedürfnisse angepasste Version von Claude.
Der Witz an der Sache, mit integrierter Websuche. (normal laufen die KI für zu Hause nur intern, was natürlich eine riesige Einschränkung ist)

Das ganze arbeitet auf meiner RTX 5060Ti Eagle OC 16gb Vram.
Unter 16gb Vram und dem Blackwell Chip ist das eher eine mühselige Sache.

Normal landen die Anfragen ja in der Cloud von Claude und werden dort bearbeitet.
Eben das kostet (Account), oder irgendwann fällt die Klappe und man muss mitten in der Arbeit anhalten und warten.
Bei mir werden die Anfragen zurück an meine GraKa gesendet und die arbeitet das ab und das kostet eben nichts und hat keinerlei Beschränkungen.
Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




Zitieren
#7
Ach ja, btw.
Wer ein Api Key von Brave braucht, der ist leider auch nicht mehr kostenlos. Sad
Aber GsD gibt es ja auch noch Suchenmaschinen wie DDGS (DuckDuckGo) die noch kostenlos sind.
Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




Zitieren
#8
Ein erster Versuch.

Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




[-] The following 1 user says Thank You to Xenos Yifu for this post:
  • Dorena Verne
Zitieren
#9
Schon besser Big Grin

Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




[-] The following 1 user says Thank You to Xenos Yifu for this post:
  • Dorena Verne
Zitieren
#10
Weiter gehts, V3 Big Grin

Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Page: https://Xenopolias.de
Radio Xenolandia
Radiostream | Radio Facebook




Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Awesomebump : Map Generator -Open Source Moe McAlpine 0 6.042 05.12.2016, 22:41
Letzter Beitrag: Moe McAlpine

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste