#2 NeregistrovanyHookyns
Super dík.
Příspěvky odeslané z IP adresy 91.219.240.–
Zdravím,
mám asi blbou otázku, ale stále se mi to nedaří nějak vyřešit.
Mám takový kód a v logu se mi normálně zobrazuje pole JSON jak má, ale nevím jak obsah proměnné vypsat do elementu #log2. Chtěl bych aby to vypsalo všechny prvky, ale pouze hodnoty bez klíče.
$.ajax({
url: "pokus.pl",
dataType: "json",
method: "GET",
success: function(result){
console.log(result);
$("#log2").html(result);
}});
});
Tak nejspíše, zato, že po změně velikosti okna se vše dá do stavu jak má být může tento kus kódu:
this.resize=function(a){this.renderer.onResize(a)
Dobrý den,
mám takový možná hloupí dotaz, ale jak se dá udělat takové pořadí elementů, aby o osobě "viděli". Jde mi o to, že mám na konci strany patičku a nadním nějaký prvek <pre> do kterého se zadává text a někam potřebuji umístit ještě jeden element a ten, když bude viditelný, tak chci aby se začal text zadávaný do <pre>zalamovat již za tímto elementem, ale když bude nastaveno display:none tak by se zalamoval text až za patičkou.
Vím, že by to mělo jít nějak nastavit, tak aby u toho tagu pre bylo stále button:0, ale nedaří se mi toho dosáhnout ten nový element se zobrazí ale text se píše jakoby za ním a neni vidět a až se dorazí na patičku tak se teprve objeví scroller a text se začne zalamovat.
Nechci měnit parametr button, protože pak při skrytí elementu se musí znovu upravovat i button a to nechci.
Děkuji.
#3 peter
Měl jsem na mysli funkci hide omylem jsem napsal hiden. On bude problém nejspíš někde v nějakém jiném JS, protože když se podívám přes nástroj vývojáře tak se to chová, tak jak mám.
A ten text se kterým je problém, tak on se tam přidává a mizí podle toho jak se scrolluje a právě problém je v tom, že když ten prvek dám skrýt, tak se jakoby nic nezmění pro ten text a stále se zobrazuje jenom do úrovně toho prvku co je teď skrytý. V případě, kdy se změní velikost okna tak se to celé předělá a vypadá to tak jak má, což mě hlava neber.
Problém je taky v tom, že já do celé té webové aplikace dodělávám jenom ten jeden element a ty zdrojáky nejsou vůbec nijak okomentovány a špatně se dohledává co k čemu je.
Zdravím,
jsem začátečník v JS a potřebuji poradit čím může být způsobeno to, že v oknu prohlížeče je nějaký text a dole je element, text se píše po daný element pak se objeví scroller a vše funguje jak má, ale když dám tento element skrýt přes událost .hiden tak se text neposune až na konec stránky ale stále se zalamuje v místě kde byl element, ale v případě kdy změním velikost okna prohlížeče, tak vše funguje jak má.
Děkuji.
Zdravím,
chtěl bych se zeptat zda lze a případně jak napsat URL adresu na nějaký php soubor ve kterém je sql dotaz, který vyžaduje dvě vstupní hodnoty.
Např.
Když mám nějaký php soubor se sql dotazem kam potřebuji doplnit jednu hodnotu tak napíšu cesta/neco.php?id=1 a zobrazí se mě stránka pro tento dotaz a já bych potřeboval zjisti jestli lze napsat url adresa kde by bylo něco ve smyslu cesta/neco.php?id1=1 a id2=2.
Děkuji.
Zdravím,
potřeboval bych poradit, co dělám blbě při propojení greenfootu se swingem.
Problém je v tom, že jak kliknu na actora, tak se mi pouze zastaví greenfoot, ale neobjeví se okno swingu.
class ZooActor extends Actor {
private Zoo zoo;
private ZooPanel zooPanel;
public ZooActor(Zoo zoo) {
this.zooPanel = new ZooPanel();
this.zoo = zoo;
this.zooPanel.setZoo(zoo);
setImage("images/zoo.png");
}
@Override
public void act() {
if (Greenfoot.mouseClicked(this)) {
Greenfoot.stop();
zooPanel.setZoo(zoo);
SwingUtilities.invokeLater(() -> zooPanel.setVisible(true));
}
}
}
public class ZooPanel extends javax.swing.JPanel {
private static final String MONEY_FORMAT = "%.2f";
public ZooPanel() {
initComponents();
}
Zoo zoo;
public void setZoo(Zoo zoo) {
this.zoo = zoo;
this.updateMoney();
this.zoo.getMoney().addPropertyChangeListener(evt -> updateMoney());
}
private void updateMoney() {
jTextField2.setText(String.format(MONEY_FORMAT, zoo.getMoney().getMoney())
);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jTextField2 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentHidden(java.awt.event.ComponentEvent evt) {
formComponentHidden(evt);
}
});
jTextField2.setEditable(false);
jLabel1.setText("Money");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(319, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(138, Short.MAX_VALUE))
);
}// </editor-fold>
private void formComponentHidden(java.awt.event.ComponentEvent evt) {
Greenfoot.start();
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}
Děkuji.
Zdravím,
chtěl bych se zeptat jak mám udělat ve hře nějakou interakci mezi hráčem a protihráčem kterého ovládá pc.
Jde mi o to, že mám například hru kde se staví vesnice a vesnice na sebe můžou navzájem posílat vojáky, tak jak mam udělat to aby nejenom hráč mohl posílat útoky ale aby i pc posílalo útoky a vylepšovalo si svoji vesnici.
Děkuji.
#2 q
Nějak nechápu, jak to myslíte. Zkoušel jsem to tak to ale píše to chyby.
Hra::Lokace* Hra::MechanismusHry::vytvorLokace(Hra::Lokace* lokace) {
Hra::Lokace *Les = new Hra::ExtraLokace(10,10): new Hra::Lokace();
m_lokace.at(1);
return Les;
Dobrý den,
mám třídu, kde mám tento konstruktor
Hra::Lokace::Lokace(int trener, int poklad, string popisNepritele, int silaNepritele, string popisLokace, bool povoleniKeVstupu) {
m_trener=trener;
m_poklad=poklad;
m_nepritel= new Hra::Nepritel(popisNepritele,silaNepritele);
m_popis = popisLokace;
m_nastaveniVstupu=povoleniKeVstupu;
}
vytvořit nějakou metodu myslel jsem něco jako Nepritel* getNepritel(){return m_nepritel}, ale tady tohle mě vyhazuje chybu.
Potřebuji totiž v jiné třídě se dostat k metodám třídy nepřítel.
Dobrý den,
potřebuji poradit ze školní projektem.
Má třídu Lokace, která má potomka ExtraLokace a pak mám třídu MechanismusHry, ve které potřebuji mít jednu metodu, pomocí, které se vytvoří, jak Lokace, tak i ExtraLokace (napadlo mě nějak přes virtuální metodu, ale nějak mi to nejde), a taky je v té to třídě atribut pole do kterého potřebuji dát znovu jak Lokace tak i ExtraLokace, protože když dám, že je pole typu Lokace, tak tam nemůžu dát ExtraLokace a naopak.
Děkuji za rady.
#3 JoDiK
Myslíš to tak že, bych měl nějakou metodu, kde by byl cyklus který by projížděl to cílové pole a v tom cyklu by byla nějaká podmínka, která by se ptala, zda tam už neni objekt toho typu a pokud ne tak by se přidal a když ano tak by to pokračovalo dál?
Dobrý den,
potřeboval bych poradit, jak udělat to, když mám pole, ve kterém jsou objekty a já je potřebuji přesunout do jiného pole a to tak aby v tom poli byl maximálně jeden objekt stejného typu.
Abych to shrnul, tak mám skupiny objektů a každá skupina má nějaké své označení, tyto objekt se dávají do pole, kde je jedno, kolik jich tam bude ze stejné skupiny. A pak potřebuji vytvořit pole, kam se budou předávat ty předměty s toho prvního pole, ale v tom to poli bude moci být pouze jeden předmět od každé skupiny.
Napadlo mě to řešit přes enum, ale nevím, jak toho docílit, aby to fungovalo, tak jak má. Proto prosím o radu, jak tento problém vyřešit.
Jsem začátečník, tak mě omluvte pokud se ptám na nějakou hloupost.
Děkuji.
Dobrý den,
potřeboval bych poradit, jak udělat to, aby se mi na obrazovku vypisovala matice a ne sloupec čísel. Mám vytvořenou tuhle proceduru a nevím co mám dát za to writeln, aby to vypisovalo, jak jsem již psal jako matici ne jako sloupec čísel.
procedure VYPISMAT (a,b:byte;d:matice);
var
i,j :byte;
begin
for i:=1 to a do
for j:=1 to b do
writeln(d[i,j]);
end;
Děkuji.
Dobrý den,
potřebuji poradit, jak mám udělat vynucení konstruktorem do pole, aby v případě, kdy se vytvoří nový objekt, tak by se museli zadat hodnoty do pole.
Děkuji
A tu asociační třídu musím vytvářet v případě, kdy mezi těmi dvěma třídami potřebuji mít agregaci v případě, kdy se jedná jenom o asociaci, tak to je implementovatelné?
Dobrý večer,
chtěl bych se zeptat s jakého důvodu se používá asociáční třída, když mám vazbu typu M:N. Nějak mě nedochází ten princip, proč se to musí rozdělovat tou asociační třídou.
Děkuji
Dobrý den,
mám problém potřebuji uložit hodnotu z pole a nevím jak na to zkusil jsme to takto ale program padá.Jedná se o metodu pouzijPredmet. Potřebuji aby ze všech předmětů, které budou v poli předměty se mohl vybrat max jeden mec, stit a helmu do coMaNaSobe.
enum TypPredmetu {
Mec=0,
Stit=1,
Helma=2
};
class Predmety {
int m_bonusObrana;
string m_nazev;
int m_typ;
public:
Predmety (int obrana, string nazev, int typ){
m_bonusObrana=obrana;
m_nazev=nazev;
m_typ=typ;
}
int getBonusObrana(){
return m_bonusObrana;
}
string getNazev(){
return m_nazev;
}
class Hrdina{
private:
array <Predmety*,10> m_predmety;
int m_penize;
int m_obrana;
Predmety** m_comaNaSobe;
public:
Hrdina(int penize, int obrana){
m_penize = penize;
m_obrana = obrana;
for(int i = 0; i<(int)m_predmety.size(); i++){
m_predmety.at(i)=0;
}
}
int getPenize(){
return m_penize;
}
int getObrana(){
return m_obrana;
}
int i=0;
void seberPredmet(Predmety*stit){
m_predmety.at(i)=stit;
i=i+1;
}
void pouzijPredmet(int ktery){
m_comaNaSobe[TypPredmetu::Stit] = m_predmety.at(ktery);
m_obrana=m_obrana+m_comaNaSobe[TypPredmetu::Stit]->getBonusObrana();
}
void printInfo(){
cout<<"Pocet zlataku: "<<m_penize<<endl;
}
~ Hrdina (){
Zdravím,
potřebuji poradit mám třídu předměty a inventář. V inventáře se ukládají předměty do pole a nevím, jak mám udělat to abych mohl to pole s uloženými předměty vypsat na obrazovku a jak hodnotu atributu m_obrana ze třídy Predmety dostat do třídy Hrdina přes nějakou metodu pouzijNesenyStit prostřednictvím právě té třídy Inventar ve kterém je pole.
Abych to shrnul.
Cílem toho co, chci udělat je to, aby se do inventáře mohlo ukládat neomezené množství předmětů, ale pak při zavolání metody pouzijNesenyStit ve třídě Hrdina by se vybral pouze jeden předmět s pole předmětů v inventáři a ten se přičetl k obraně hrdiny
class Predmety {
int m_obrana;
string m_nazev;
public:
Predmety (int obrana, string nazev){
m_obrana=obrana;
m_nazev=nazev;
}
int getObrana(){
return m_obrana;
}
string getNazev(){
return m_nazev;
}
};
class Inventar {
array <Predmety*,10> m_predmety;
public:
Inventar(){
for (int i=0; i<<(int)m_predmety.size(); i++) {
m_predmety.at(i)=0;
}
}
int i=0;
void kupPredmet(Predmety*stit){
m_predmety.at(i)=stit;
i=i+1;
}
Dobrý den,
mám v rámci školního projektu vytvořit hru a nevím, jak mám vytvořit nějakou posloupnost příběhu hry, aby probíhal postupně, jak má. Pochopil bych to kdybych se to mohlo dělat v mainu, ale pokud to správně chápu tak main by měl být skoro prázdný.
Tady mám malí úryvek, který bych dal normálně do mainu a dělalo by to, to co má a od vás potřebuji poradit, jak např. tady ten kod předělat, tak abych ho mohl dát někam do třídy nebo já nevím kam se to dává, aby to fungovalo a zároveň to nebylo v mainu.
Poklad*poklad= new Poklad (100);
Hrdina* Tomas = new Hrdina(10);
Tomas->printInfo();
bool i=false;
while (i==false){
cout<<"Pred tebou je truhla pokud se do ni chces podivat stikni 1 jinak zmackni 0"<<endl;
int cislo;
cin>>cislo;
if (cislo==1) {
Tomas->seberPoklad(poklad);
i=true;
}else if (cislo==0){
cout<<"V tom pripade se vrat na namesti"<<endl;
i=true;
}else{
cout<<"Musis stisknout 1 nebo 0"<<endl;
}
};
Děkuji.
Dobrý den,
chtěl bych někoho požádat, aby mě vysvětlil rozdíl, kdy používat funkci, a kdy proceduru. Chápu že funkce vrací hodnotu, a že funkci nemůžu použít, když má být více výsledků než jeden a pak mám poznámku, že do funkce se nemůže načíst hodnota, což moc nechápu, jak je myšleno a obecně to moc nechápu, kdy co použít.
Děkuji.
#6 ingiraxo
Jo s tím souhlasím, že by se hodila spíš agregace, ale tohle bylo jenom tak na zkoušku, jestli jsem pochopil danou látku a nic mě nenapadlo tak jsem zkusil udělat hrdiny který by prostě měl "od narozeni" brnění a právě v té kompozici jsem neviděl, zda se dá nějak přičíst ta síla toho brnění co je v konstruktoru k obraně hrdiny, protože to mě nějak nefunguje.
A ohledně těch společných rodičů, tak to jsem se ještě neučili.
#4 ingiraxo
Ty si asi špatně pochopil, jak jsem to myslel nebo já špatně chápu kompozici, protože jsem si myslel, že když se někde udělá kompozice, tak je ta třída s tou druhou třídou pevně spojena. Takže vznikají spolu a zároveň i spolu zanikají.
A já nevím, jak mám udělat, když mám tu sílu brnění v konstruktoru, tak aby se mi přičetla k obraně. To že bych si ji tma případně mohl nasetovat, tak to chápu a to mi i funguje, ale nevím zda to jde rovnou s toho konstruktoru tu hodnotu použít a přičíst k obraně.
#include <iostream>
using namespace std;
class Mec{
int m_sila;
public:
Mec(int sila ){
m_sila=sila;
}
int getSila(){
return m_sila;
}
};
class Brneni{
int m_obrana;
public:
Brneni(int silaBrneni){
m_obrana=silaBrneni;
}
int getObrana(){
return m_obrana;
}
};
class Hrdina{
Mec* m_mec;
int m_sila;
int m_obrana;
Brneni*m_brneni;
public:
Hrdina (int sila, int obrana, int silaBrneni){
m_sila=sila;
m_obrana=obrana;
m_mec=0;
m_brneni=new Brneni(silaBrneni);
}
void seberMec(Mec*mec){
m_sila=m_sila+mec->getSila();
}
void odhodMec(Mec*mec){
m_sila=m_sila-mec->getSila();
}
int getBrneni(){
return m_brneni->getObrana();
}
void printInfo(){
cout<<"Sila Hrdina: "<<m_sila<<endl;
cout<<"Obrana Hrdiny: "<<m_obrana<<endl<<endl;
cout<<"Sila Brneni: "<<m_brneni<<endl;
}
~Hrdina(){
delete m_brneni;
}
};
int main()
{
Mec*zlaty = new Mec(100);
Hrdina*Tomas = new Hrdina(1500,500, 856465);
Tomas->seberMec(zlaty);
Tomas->printInfo();
Tomas->odhodMec(zlaty);
Tomas->printInfo();
return 0;
}
Dobrý den,
má problém s vytvořením kompozice. Vytvořil jsem třídu brnění, kterou bych chtěl mít se třídou hrdina spojen kompozicí, ale s nějakého pro mě nevysvětlitelného důvodu to nefunguje a místo toho, aby mi to vypisovalo sílu brnění, tak se mi tam vypisuje nějaký nesmysl (0x980d90).
Děkuji všem za radu.
Zdravím, chtěl bych se zeptat jestli je tahle výroková formule kontradikce. (((a implikace b) disjunkce b) implikace a)
Aha, tak to mě nedošlo, že se tam musí dát == , tak vám děkuji. Teď už to funguje jak má.
Chtěl bych se zeptat, co mám za chybu v podmínce, že mi nefunguje její druhá větev od else. Ať už je pohlavní nastaveno na true nebo false pokaždé program funguje, jakoby pohlaví bylo nastaveno na true.
#include <iostream>
using namespace std;
class Zvire {
string m_druh;
int m_kgJidlaNaDen;
bool m_pohlavi;
string m_jmeno;
public:
Zvire (string druh, bool pohlavi){
m_druh = druh;
m_kgJidlaNaDen = 30;
m_pohlavi = pohlavi;
m_jmeno = "";
}
void setJmeno (string jmeno){
cout <<"Zadej jmeno"<<endl;
cin>>jmeno;
m_jmeno = jmeno;
}
void zmenaJidla(bool pohlavi, int jidloKgNaDen){
if (pohlavi = true){
if (jidloKgNaDen<30){
cout<<"Vaha jidla musi byt minimalne 30kg"<<endl;
jidloKgNaDen =30;
}else{
m_kgJidlaNaDen=jidloKgNaDen;
}
}else{
if (jidloKgNaDen<50){
cout<<"Vaha jidla musi byt minimalne 50kg"<<endl;
jidloKgNaDen =50;
}else{
m_kgJidlaNaDen = jidloKgNaDen;
}
}
}
void printInfo(){
cout<<"Druh: "<<m_druh<<endl;
cout<<"Jidlo na den v Kg: "<<m_kgJidlaNaDen<<endl;
cout<<"Pohlavi: "<<m_pohlavi<<endl;
cout<<"Jmeno: "<<m_jmeno<<endl<<endl;
}
~Zvire(){
cout<<"Zvire bylo premisteno do jine zoo"<<endl;
}
};
int main()
{
Zvire* orangutan = new Zvire("opice",true);
orangutan->zmenaJidla(true,50);
orangutan->setJmeno("");
orangutan->printInfo();
delete orangutan;
return 0;
}
Chtěl bych se zeptat, jaký je rozdíl mezi těmi to zápisy.
float getCenaZaPujceni (int pocetDni) {
return pocetDni * m_cenaZaDen;
}
void pridejZaznamZapujceni (int pocetDni, float pocetUjetychKm){
m_celkovyVydelek += getCenaZaPujceni (pocetDni);
m_najetoKm += pocetUjetychKm;
}
nebo
void pridejZaznamZapujceni (int pocetDni, float pocetUjetychKm){
float CenaZaPujceni = pocetDni * m_cenaZaDen
m_celkovyVydelek += CenaZaPujceni;
m_najetoKm += pocetUjetychKm;
}
Nevím jestli je nějaký rozdíl ve funkčnosti nebo jde pouze o to, aby byl kod přehlednější, a proto se to dává do toho get, protože vím, že jsem se učili, že by každá metoda měla být samostatně.
Začínám s programovacím jazykem C++ a ve škole děláme třídy a já jsem příliš nepochopil, kdy používám set a get. Chápu, že když použiji set, tak pak si od té proměnné co vznikne, můžu zadat nějaké hodnoty, ale nevím, proč se to někdy zapisuje, bez toho set a někdy s ním.
Příklad:
class Auto
public:
string m_znacka;
int m_maxrychlost;
void mojAuto (string znacka, int maxrychlost)
m_znacka = znacka;
m_maxrychlost = maxrychlost;
a jindy takhle:
class Auto
public:
string m_znacka;
int m_maxrychlost;
void setZnacka (string znacka)
m_znacka = znacka;
void setMaxrychlost (int maxrychlost)
m_maxrychlost = rychlost
Doufám, že chápete jak to myslím.
A pak vůbec nevím k čemu slouží get. např. kdybych tam měl napsaný:
string getZnacka ()
return m_znacka
Nechápu, co má tenhle krok za smysl a k čemu ho dál v programu využiji.
Předem děkuji za vysvětlení.
Chtěl bych se zeptat, jestli někdo nevíte, co mám za problém. Začínám s jazykem C++ a používám Code Bloks 13.12 a nejde mi zkompilovat kod, který má v hlavičce #include <iostream>, vždy mi to napíše fatal error:iostream: No such file or dicitonary.Vůbec nevím, co s tím. Děkuji za každou radu.
#5 JoDiK
Aha, takhle je to myšlený, protože v knížce, co mám to popisují jak říkáš, ale mě to normálně funguje, i když tam dám readln (pohlavi), ale radši se to teda budu učit, jakoby to tak nefungovalo.
V té knížce to vysvětlují, tak že se to má psát jako readln (pom).
Chtěl bych se zeptat kde mám chybu v tomhle zápisu.Dělá mi to tu chybu, že jak mám tu poslední část else a aby to napsalo Spatne zadany udaj, tak se mi tam tenhle řádek objeví vždy ne jenom, když někdo splete číslo.
if (cislo = 1) then
begin
write ('Pohlavi: ');
readln (pohlavi);
if (pohlavi=muz) then
begin
tuk := (0.715 * bmi - 12.1) * (vyska/100 * vyska/100);
writeln('Tvuj obsah tuku v tele je ', tuk:0:2,'%');
writeln ('Obvykle zdravotni rizika zacinaji pri vice, jak 25% tuku v tele.') ;
end
else
begin
tuk := (0.713 * bmi - 9.74) * (vyska/100 * vyska/100);
writeln('Tvuj obsah tuku v tele je', tuk:0:2,'%');
writeln ('Obvykle zdravotni rizika zacinaji pri vice, jak 32% tuku v tele. ') ;
end
end;
if (cislo = 2) then
begin
writeln;
end;
else
begin
writeln('Spatne zadany udaj');
end;
Děkuji
Jsem začátečník a chtěl bych se zeptat jaký je rozdíl mezi tím, když něco zapíšu tím to způsobem:
type
druh = (zena, muz);
var
pohlavy:druh;
begin
if (pohlavy = muz) then
begin
writeln ('Muz.');
end
else
begin
writeln (' Zena.');
end;
end.
a nebo když to zapíšu takto
var
txt, muz, zena : string;
begin
if (txt = 'muz') then
begin
writeln ('Muz.');
end
else
begin
writeln ('Zena.');
end;
end.
Děkuji za odpověď.
Kéž už bych ho nikdy neviděla... Děkuju za pomoc :)
Nevíte prosím, co je tam za chybu?
#include <avr/io.h> //
#define F_CPU 20000000UL //definice frekvence 20MHz
#include <util/delay.h> //knihovna přerušení
#define bit_is_set (PIND,PD0) (ADRESS |= (1 << BIT))
#define bit_is_clear (PIND,PD0) (ADRESS &= ~(1 << BIT))
unsigned char cislo;
int main(void)
{
DDRB=0xff; //brána B je výstupní
PORTB=0xff; //počáteční stav na bráně
DDRD=0x00; //brána D je vstupní
PORTD=0xff; //na bráně D je aktivován Pull-up
cislo=15; //počáteční stav čísla
while(1)
{
if (bit_is_clear(PIND,PD0))
{
_delay_ms(20);
if (bit_is_set(PIND,PD0)) break; //ošetření vůči zákmitům
cislo=15; //nulujeme proměnnou cislo
_delay_ms(200);
}
if (bit_is_clear(PIND,PD1))
{
_delay_ms(20);
if (bit_is_set(PIND,PD1)) break; //ošetření vůči zákmitům
if(cislo<255)cislo++;//jestliže je cislo menší jak 255 pak je inkrementujeme
_delay_ms(200);
}
if (bit_is_clear(PIND,PD2))
{
_delay_ms(20);
if (bit_is_set(PIND,PD2)) break; //ošetření vůči zákmitům
if(cislo>15 )cislo--;//jestliže je cislo větší jak 0 pak je dekrementujeme
_delay_ms(200);
}
PORTB=cislo; //hodnotu proměnné cislo přiřadíme PORTU B
}
}
Ahoj, prosím Vás mohl by mi někdo pomoct? Dostala jsem za úkol napsat program ale o programování v podstatě vůbec nic nevím. Pomůžete?
Zadání:
Na bránu B připojte přípravek LED, na bránu D připojte přípravek s tlačítky. Stiskem tlačítka S0 až S2 měňte stav LED. Tlačítko S0 nuluje všechny LED. Tlačítko S1 zvýší číslo zobrazené pomocí LED o 1. Tlačítko S2 sníží číslo zobrazené pomocí LED o 1. programově ošetřete zákmity.