Új hozzászólás Aktív témák
-
Tomi_78
tag
Sziasztok!
Most kezdtem kóstolgatni a C# programozást, és ehhez egy kis grafikus programot írnék SharpDevelop környezetben. Viszont a programom futtatásakor azt írja ki, hogy:
"Az "egydenever" név nem szerepel ebben a környezetben"
illetve a DrawImage-ben a két utolsó paramétert (srcRect és units) nem ismeri, bár nem is tudom, hogy ide miket kéne megadni.
Tudnátok segíteni ennek a két hibajelenségnek a megoldásában? Íme a kódom:using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace Animacios
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
Bitmap deneverkepe1 = new Bitmap("kepei\\kisdenever1bmp.bmp");
Bitmap deneverkepe2 = new Bitmap("kepei\\kisdenever2bmp.bmp");
class Deneverek
{
public int dirx,diry,kepe;
};
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
deneverkepe1.MakeTransparent();
deneverkepe2.MakeTransparent();
Deneverek[] egydenever = new Deneverek[3];
int svsz;
for (int i=0; i<3; i++) {
egydenever[i]= new Deneverek();
System.Random vsz = new System.Random();
svsz = vsz.Next(1);
if (svsz==0) {
egydenever[i].dirx = -1;
} else {
egydenever[i].dirx = 1;
};
svsz = vsz.Next(1);
if (svsz==0) {
egydenever[i].diry = -1;
} else {
egydenever[i].diry = 1;
};
svsz = vsz.Next(1);
if (svsz==0) {
egydenever[i].kepe = 0;
} else {
egydenever[i].kepe = 1;
};
};
}
void AnimIdozitoTick(object sender, EventArgs e)
{
for (int i=0; i<3; i++) {
if (egydenever[i].kepe==0) {
egydenever[i].kepe=1;
}
else {
egydenever[i].kepe=0;
};
};
}
void MozgIdozitoTick(object sender, EventArgs e)
{
for (int i=0; i<3; i++) {
switch (egydenever[i].dirx) {
case -1:
if (egydenever[i].Left>0) {
egydenever[i].Left-=4;
}
else egydenever[i].dirx*=-1;
break;
case 1:
if (egydenever[i].Left<800-egydenever[i].Width) {
egydenever[i].Left+=4;
}
else egydenever[i].dirx*=-1;
break;
};
switch (egydenever[i].diry) {
case -1:
if (egydenever[i].Top>0) {
egydenever[i].Top-=4;
}
else egydenever[i].diry*=-1;
break;
case 1:
if (egydenever[i].Top<600-egydenever[i].Height) {
egydenever[i].Top+=4;
}
else egydenever[i].diry*=-1;
break;
};
};
}
void MainFormPaint(object sender, PaintEventArgs e)
{
for (int i=0; i<3; i++) {
if (egydenever[i].kepe==0) {
e.Graphics.DrawImage(deneverkepe1,egydenever[i].Left,egydenever[i].Top,srcRect, units);
}
else {
e.Graphics.DrawImage(deneverkepe2,egydenever[i].Left,egydenever[i].Top,srcRect, units);
}
}
}
}
} -
Tomi_78
tag
válasz Alexios #9343 üzenetére
Szia Alexios!
Köszönöm a választ; ezzel egyúttal azt a kérdésemet is megválaszoltad, hogy kezdőérték nélküli, dinamikus tömböt hogyan lehet létrehozni.
Még javítottam a kódomon annyit, hogy a képe egy változóba kerüljön, tehát:class Deneverek
{
public int dirx,diry;
public Bitmap kepe;
};(...)
if (svsz==0) {
egydenever[i].kepe = deneverkepe1;
} else {
egydenever[i].kepe = deneverkepe2;
};
De ezek után pl. a kirajzolásban nem ismeri fel a képhez tartozó Left és Top változókat:void MainFormPaint(object sender, PaintEventArgs e)
{
for (int i=0; i<3; i++) {
e.Graphics.DrawImage(egydenever[i].kepe,egydenever[i].kepe.Left,egydenever[i].kepe.Top,egydenever[i].kepe.Width,egydenever[i].kepe.Height);
}
}Ez miért van?
És hogy miért pont SharpDevelop? Martonxnek is válaszolva: már régebben a gépemen pihen letöltve és csak most vettem elő. Az tetszett benne annakidején, hogy ingyenes és kicsi: csak letöltöd, kitömöríted és használatra kész. Nem tudom, van-e még ilyen fejlesztőkörnyezet, de nekem egyelőre bejön. Azt viszont én is sajnálom, hogy már nem fejlesztik tovább a készítői. -
Tomi_78
tag
Bocs, az előbb javítottam és láttam, hogy nem kezdőérték nélküli a Deneverek tömb... Így javítottam a programomon, de most csak egy denevér jelenik meg, az sem animálódik és nem is mozog:
namespace Animacios
{
public partial class MainForm : Form
{
Bitmap deneverkepe1 = new Bitmap("kepei\\kisdenever1bmp.bmp");
Bitmap deneverkepe2 = new Bitmap("kepei\\kisdenever2bmp.bmp");
class Deneverek
{
public int dirx,diry,xhely,yhely;
public Bitmap kepe;
};
Deneverek[] egydenever;
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
deneverkepe1.MakeTransparent();
deneverkepe2.MakeTransparent();
egydenever = new Deneverek[3];
int svsz;
for (int i=0; i<3; i++) {
egydenever[i]= new Deneverek();
System.Random vsz = new System.Random();
svsz = vsz.Next(1);
if (svsz==0) {
egydenever[i].dirx = -1;
} else {
egydenever[i].dirx = 1;
};
svsz = vsz.Next(1);
if (svsz==0) {
egydenever[i].diry = -1;
} else {
egydenever[i].diry = 1;
};
svsz = vsz.Next(1);
if (svsz==0) {
egydenever[i].kepe = deneverkepe1;
} else {
egydenever[i].kepe = deneverkepe2;
};
egydenever[i].xhely=vsz.Next(1,800-egydenever[i].kepe.Width);
egydenever[i].yhely=vsz.Next(1,600-egydenever[i].kepe.Height);
};
}
void AnimIdozitoTick(object sender, EventArgs e)
{
for (int i=0; i<3; i++) {
if (egydenever[i].kepe==deneverkepe1) {
egydenever[i].kepe=deneverkepe2;
}
else {
egydenever[i].kepe=deneverkepe1;
};
};
}
void MozgIdozitoTick(object sender, EventArgs e)
{
for (int i=0; i<3; i++) {
switch (egydenever[i].dirx) {
case -1:
if (egydenever[i].xhely>0) {
egydenever[i].xhely-=4;
}
else egydenever[i].dirx*=-1;
break;
case 1:
if (egydenever[i].xhely<800-egydenever[i].kepe.Width) {
egydenever[i].xhely+=4;
}
else egydenever[i].dirx*=-1;
break;
};
switch (egydenever[i].diry) {
case -1:
if (egydenever[i].yhely>0) {
egydenever[i].yhely-=4;
}
else egydenever[i].diry*=-1;
break;
case 1:
if (egydenever[i].yhely<600-egydenever[i].kepe.Height) {
egydenever[i].yhely+=4;
}
else egydenever[i].diry*=-1;
break;
};
};
}
void MainFormPaint(object sender, PaintEventArgs e)
{
for (int i=0; i<3; i++) {
e.Graphics.DrawImage(egydenever[i].kepe,egydenever[i].xhely,egydenever[i].yhely,egydenever[i].kepe.Width,egydenever[i].kepe.Height);
}
}
}
} -
Tomi_78
tag
Utánanézek a könyvnek, bár nekem is vannak programozással (C++ és C# is) foglalkozó köteteim, igaz, végigolvasni még egyet sem volt időm vagy türelmem. Inkább célirányosan kutatok, ha szembesülök valami problémával, mert azt már nem kell nekem elmagyarázni, hogy mi a tömb, az elágazás vagy a ciklus, hanem inkább az olyan dolgokat, amik az adott fejlesztőkörnyezet sajátosságai, mint pl. hogy C#-ban hol kell elhelyezni a globális változókat a kódban vagy hogy bizonyos deklarálásokat milyen formában kell megadni.
Lehet, hogy velem van a hiba, hogy szájbarágósan és nem bikkfanyelven várom el a szakkönyvektől is a magyarázatokat, dehát ez van.
Az OOP lényegét is úgy mondanám el, hogy tagolva vannak benne a dolgok, az események csak azok szükségessége esetén hajtódnak végre, és nem folyamatosan, ciklikusan figyeli a program az összes tennivalót.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Ipad Pro 11 (2018-2022) Ipad Air 5/4 ESR Magnetic Keyboard Case
- IPhone 15 Pro max 256GB gyári független 2027. 04.20. Apple garancia MM vásárlás
- Samsung Galaxy S23 Ultra / Green / 512GB / Kártyafüggetlen / Számla + Garancia
- iPhone 12 Pro Max / Graphite / 256 GB / 86% akkumlátor / Kártyafüggetlen / Számla + Garancia
- iPhone 15 Pro / Black Titanium / 256 GB / Bontott doboz / 0 perces / Kártyafüggetlen
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Alpha Laptopszerviz Kft.
Város: Pécs