Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
13.05.2026, 19:12
(Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2026, 23:37 von Xenos Yifu.)
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.
Beiträge: 10.276
Themen: 656
Thanks Received: 9.335 in 3.074 posts
Thanks Given: 4.637
Registriert seit: Jul 2010
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.
Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
... im Moment gecancelt.
ich möchte mir erst noch Open WebUI genau anschauen und melde mich dann, wofür ich mich entscheide.
Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
Huch wir haben gleichzeitig gepostet^^.
Ich habe auch Blut geleckt.
Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
13.05.2026, 21:44
(Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2026, 23:14 von Xenos Yifu.)
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()
Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
13.05.2026, 23:27
(Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2026, 23:30 von Xenos Yifu.)
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.
Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
Ach ja, btw.
Wer ein Api Key von Brave braucht, der ist leider auch nicht mehr kostenlos. 
Aber GsD gibt es ja auch noch Suchenmaschinen wie DDGS (DuckDuckGo) die noch kostenlos sind.
Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
Schon besser
Beiträge: 1.747
Themen: 301
Thanks Received: 1.624 in 891 posts
Thanks Given: 997
Registriert seit: May 2020
Weiter gehts, V3
|